2016-07-27 131 views
0

我想在cookie中存儲用戶名和密碼。 我使用MD5散列技術加密密碼。 那麼我怎麼能存儲在cookie中的加密密碼?如何在C#中的cookies中存儲加密的密碼?

+1

http://stackoverflow.com/questions/2100356/is-it-secure-to-store -passwords-in-cookies –

+3

不,只是.. .No –

+0

@KayNelson我正在加密該密碼。所以它是否安全? – Nik

回答

0

您不應該在cookie中存儲用戶名和密碼,因爲這是發送給客戶端的。即使它被哈希,特別是如果您要直接比較Cookie中收到的哈希密碼和數據庫中的哈希密碼。這打破了哈希的目的。

如果要在請求之間維護用戶的會話,則應使用會話ID。我不是C#的專家,但用谷歌速度我發現這個:

HttpContext.Current.Session.SessionID 

這就是我將存儲在cookie中。

+0

是不可逆的。但是我將數據庫密碼中的散列密碼與散列密碼進行了比較。 – Nik

+0

這是一個問題。哈希的目的是,如果有人能夠訪問哈希密碼,他們無法向服務器進行身份驗證,因爲您的服務器應該再次運行哈希函數,並且不會與存儲在數據庫中的哈希匹配。 –

+0

對不起,雙重評論,我雖然按輸入會插入一個空白行而不是發送。那麼我的意思是,如果你直接比較接收到的數據和數據庫哈希,如果有人能夠訪問哈希,他們將能夠向服務器進行身份驗證。哈希的目標是在數據庫中有一個客戶端必須發送的數據。 –

1

那不是方法。你把一些參數,如時間戳,用戶代理,當前IP,用戶名等,但不是密碼。現在爲您的令牌計算散列並將其作爲cookie發送。多數民衆贊成如何一個身份驗證令牌。

要在登錄時對用戶進行身份驗證,請計算服務器上的哈希,並將其與數據庫中的哈希進行比較。永遠不要發送你的散列密碼。爲了更好的標準,你應該使用salted hash作爲密碼。參見this瞭解鹽類。

此外MD5哈希不加密。他們之間有很多不同之處。另外,使用SHA而不是MD5。詳情請參閱this

0

我不會推薦給任何人......

而是保存獲取用戶密碼。將它們保存在會話中以便在整個用戶連接期間使用,並且如果您希望用戶使用相同的密碼並稍後登錄,則必須具有用於存儲數據的數據庫。

因此要存儲如下

Session["username"] = txtusername.Text; 

然後到不同的頁面上再次使用它或信息別的地方

string username = Session["username"].toString();