在Web应用程序中安全“记住我”

时间:2012-03-23 20:34:40

标签: c# asp.net security authentication

我是ASP.net中的webdev的新手。

我的问题是如何确保安全的“记住我”功能。 目前,我正在将一个对象序列化为一个cookie,以便将来对用户进行身份验证。

但现在我的想法是,如果有人复制我的cookie,他将能够使用被黑客入侵的人的帐户登录。是否有更安全的版本记住不同会话之间的某人登录?

祝你好运

2 个答案:

答案 0 :(得分:3)

“记住我”cookie通常包含一个长期存在的会话密钥。通过存储有关最初创建cookie的计算机环境的额外信息,您可以更加难以使用被盗cookie,并在接受cookie之前检查此信息。这称为“设备指纹识别”。它可以非常精确,但它不是很容易做到而且不是100%安全。

ip-number可以是设备指纹的一部分,但移动设备上的ip-number会经常更改,因此会大大降低cookie的价值。您可以检查http标题字段,如“User-Agent”,“Accept”,“Accept-Language”等。这些字段在两个不同的浏览器中通常会有所不同。你可以使用javascript并检查os版本,java版本等等。

将设备指纹与会话密钥一起存储在服务器上将使记住我的cookie更强一些。但是,它仍然不是很安全。窃取cookie的攻击者可能也会收集所有这些信息。

PS:还要记住,如果用户知道cookie丢失了,即如果他的计算机被盗,用户应该能够取消激活记忆我的cookie。

答案 1 :(得分:0)

您可以在Cookie中存储一些额外信息,例如客户端IP地址。