2012-03-23 53 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。