2012-03-23 55 views
3

我是ASP.net的webdev的新手。在Web應用程序中安全「記住我」

我的問題是如何確保安全的「記住我」功能。 目前,我正在將一個對象序列化爲一個cookie,以便將來對用戶進行身份驗證。

但現在我的想法是,如果有人複製我的cookie,他將能夠登錄與黑客入侵的人的帳戶。記住不同會話之間的人的登錄有更安全的版本嗎?

最好的問候

+0

查看http://stackoverflow.com/questions/3206622/is-putting-data-in-cookies-secure,想法是將一些已知值(旋轉值)存儲在數據庫中,然後與一個已知值cookie – sll 2012-03-23 20:37:37

回答

0

您可以在cookie中存儲一些額外信息,如客戶端IP地址。

+0

這不會解決我的cookie的「複製粘貼」問題......因爲我也想提供無限制的記憶 – kyjan 2012-03-23 20:39:00

+1

-1 OP特別提到了安全問題,但是如果兩臺機器位於一臺帶NAT的路由器之後他們都將顯示具有相同的IP地址。因此,同一路由器後面的任何人都可以竊取cookie並破壞安全。 – 2012-03-23 20:48:45

+1

它不會處理在同一臺計算機上覆制它的其他用戶,但另一個複製它的人不可能擁有相同的IP ...現在,除IP之外,還有其他更好的東西可以存儲,但概念是朝着正確的方向前進。 – Servy 2012-03-23 20:51:04

3

「記住我」cookie通常包含一個長期會話密鑰。通過存儲關於最初創建cookie的計算機環境的額外信息,您可以更容易地使用被盜的cookie,並在接受cookie之前檢查此信息。這被稱爲「設備指紋識別」。它可以非常精確,但它不是很容易做到,而且不是100%安全。

該ip號碼可以是設備指紋的一部分,但移動設備上的ip號碼發生變化的頻率很高,所以會相當大地降低cookie的值。您可以檢查http標題字段,如「用戶代理」,「接受」,「接受語言」等。這些字段在兩個不同的瀏覽器上通常會有所不同。您可以使用javascript並檢查操作系統版本,Java版本等。

在服務器上存儲設備指紋以及會話密鑰將使記憶-me-cookie變得更加強大。但是,它仍然不是很安全。竊取cookie的攻擊者可能也可以收集所有這些信息。

PS:另外請記住,如果用戶知道cookie丟失,即他的電腦被盜,應該可以取消激活remember-me-cookie。