![](/img/trans.png)
[英]Force the password to contain lower case, upper case, special character and number
[英]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.