簡體   English   中英

接受大小寫相同的密碼

[英]Accepting same password in both upper and lower case

我現在面臨一個奇怪的問題。 我在ASP.NET MVC中有一個登錄頁面,該頁面接受用戶的用戶名和密碼。 當用戶單擊“登錄”按鈕時,表格將與輸入的數據一起提交回控制器。

然后,我使用下面的代碼檢查它是否是有效的登錄名:

var isValidLogin = (from user in dbEntities.usermasters
                     where (user.userName.Equals(login.username) && user.password.Equals(login.password))
                     select user).Any();

在兩種情況下, isValidLogin都返回true 即,如果密碼為pwd且用戶輸入PWD ,則返回true 希望能得到一些有價值的建議。

我認為SQL Server的默認排序規則不區分大小寫。 您可以在服務器,表或列級別設置排序規則。

要檢查服務器的協作,請執行以下操作:

SELECT SERVERPROPERTY('COLLATION')

就我而言,它是: Latin1_General_CI_AS 此CI表示不區分大小寫。

您可能對string.Equals感到困惑。等於不區分大小寫,但實際上已在LINQ to Entities中將其轉換為查詢。

如果需要,可以將密碼列的排序規則更改為區分大小寫。

聚苯乙烯

確實不建議以明文形式存儲密碼。 如果您是數據庫,或者其備份遭到破壞,那么您注定要失敗。 建議將它們存儲為鹽腌哈希。 每次用戶登錄時,都將哈希+鹽應用於密碼,並將其與數據庫中存儲的內容進行比較。 哈希值不可逆。

另外,如果您使用哈希,則獎金會區分大小寫:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM