上按照我的存儲過程檢查多個條件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