上按照我的存储过程检查多个条件SQL Server 2008中
ALTER PROCEDURE [dbo].[Proc_userlogin] @userid VARCHAR(50),
@password VARCHAR(50)
AS
DECLARE @ReturnVal VARCHAR(500)
SET nocount ON
IF EXISTS(SELECT username,
password
FROM clients
WHERE username = @userid
AND password = Hashbytes('SHA1', @password))
SET @ReturnVal='0|Logged in Successfully'
ELSE IF NOT EXISTS(SELECT username
FROM clients
WHERE username = @userid)
SET @ReturnVal='1|Incorrect Username'
ELSE IF NOT EXISTS(SELECT username,
password
FROM clients
WHERE username = @userid
AND password = Hashbytes('SHA1', @password))
SET @ReturnVal='1|Incorrect Password'
SELECT @ReturnVal
在上面的存储过程我检查是否用户名和密码已经输入了我面临correctly.The问题是检查多个条件。可以消除多个选择查询,并使用If条件中的单选查询来检查验证。可以定制上述存储过程以最大限度地减少条件内的选择语句的数量。
请建议
感谢
只检查成功(即只有第一个)。为什么告诉攻击者他猜对了一个有效的用户名?你也可能泄露个人数据,因为任何人都可以知道用户名是否在你的系统中。 – adrianm 2014-10-17 07:49:37
你是对的@adrianm,但我的用户不会那么复杂 – user2614235 2014-10-17 07:52:40
在大多数情况下,我发现遵循最佳实践比花费时间记录给我的客户为什么我没有更容易。 (您确实告诉您的客户有关当前代码中已知的安全/隐私问题?) – adrianm 2014-10-17 09:45:29