2014-07-16 49 views
0

我的項目中有一個登錄表單,它接受用戶名和密碼進行驗證並繼續前進。以區分大小寫的方式驗證密碼

我正在使用SQL Server作爲後端。最初在我的登錄頁面中,如果我輸入密碼或小寫,它會驗證我的登錄頁面並繼續執行項目。但是現在我想添加區分大小寫的密碼驗證到我的密碼文本框,以便它匹配數據庫中密碼字符的確切順序。

如何將此驗證添加到密碼字段。可以將它添加到登錄表單或SQL Server中嗎?

+0

你如何驗證你的密碼字段? –

+0

密碼是如何存儲的,您是否計算了散列? – martinstoeckli

+0

密碼字段使用存儲在數據庫中的數據進行驗證。密碼字段上未添加其他驗證。 @Dhaval Patel –

回答

0

您可以使用正則表達式

^(?=(.*\d){2})(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z\d]).{8,}$ 
     --------- --------------------- --------------- ----- 
      |    |     |   |->match 8 or more characters 
      |    |     |->match further only if theres anything except letter or digit 
      |    |->match further only if there is an upper-lower case letter 
      | 
      |->match further only if there are two digits any 

where 

Demo Link

+1

我不知道這是一個笑話還是一個錯誤的問題 – testydonkey

1

沒有什麼特別的事,但是你一定要避免:

  • 在明確
  • 存儲密碼使用一個簡單的散列如沒有一些鹽的MD5(即散列時引入一定數量的可變性)

要做到這一點的一種方法是將帳戶中最後一次密碼更改的日期(例如64位整數)與散列一起存儲(類似於SHA1應該是合理的)。當用戶連接時,表單會被賦予一個數字(稱爲'salt'),表單會將鍵入的密碼打包(使用UTF8等預定義編碼),然後生成一個散列表,並將其發送到以base64爲例(我的意思是你的密碼字段可能只是一個包含base64編碼散列的文本字段)。如果與服務器(數據庫或應用程序)的通信受到保護,則密碼可以通過線路傳輸沒有問題。服務器比較這兩個哈希值,如果它們匹配,那麼就可以。

鹽的原因是根據預先構建的MD5或SHA哈希碼與您的密碼數據庫(如果恰巧是由黑客下載的)相匹配的字典,大大減緩了攻擊速度。如果連接可以被黑客讀取,它也會有所幫助,因爲相同的預先建立的字典攻擊可以在MD5哈希上傳播。

0

正如其他人所說的,將密碼存儲爲純文本並不是一種好的做法。如果這就是你要求做的,

if(StringA == StringB) 

本身在C#中區分大小寫。

相關問題