我是ASP.net的webdev的新手。在Web应用程序中安全“记住我”
我的问题是如何确保安全的“记住我”功能。 目前,我正在将一个对象序列化为一个cookie,以便将来对用户进行身份验证。
但现在我的想法是,如果有人复制我的cookie,他将能够登录与黑客入侵的人的帐户。记住不同会话之间的人的登录有更安全的版本吗?
最好的问候
我是ASP.net的webdev的新手。在Web应用程序中安全“记住我”
我的问题是如何确保安全的“记住我”功能。 目前,我正在将一个对象序列化为一个cookie,以便将来对用户进行身份验证。
但现在我的想法是,如果有人复制我的cookie,他将能够登录与黑客入侵的人的帐户。记住不同会话之间的人的登录有更安全的版本吗?
最好的问候
您可以在cookie中存储一些额外信息,如客户端IP地址。
“记住我”cookie通常包含一个长期会话密钥。通过存储关于最初创建cookie的计算机环境的额外信息,您可以更容易地使用被盗的cookie,并在接受cookie之前检查此信息。这被称为“设备指纹识别”。它可以非常精确,但它不是很容易做到,而且不是100%安全。
该ip号码可以是设备指纹的一部分,但移动设备上的ip号码发生变化的频率很高,所以会相当大地降低cookie的值。您可以检查http标题字段,如“用户代理”,“接受”,“接受语言”等。这些字段在两个不同的浏览器上通常会有所不同。您可以使用javascript并检查操作系统版本,Java版本等。
在服务器上存储设备指纹以及会话密钥将使记忆-me-cookie变得更加强大。但是,它仍然不是很安全。窃取cookie的攻击者可能也可以收集所有这些信息。
PS:另外请记住,如果用户知道cookie丢失,即他的电脑被盗,应该可以取消激活remember-me-cookie。
查看http://stackoverflow.com/questions/3206622/is-putting-data-in-cookies-secure,想法是将一些已知值(旋转值)存储在数据库中,然后与一个已知值cookie – sll 2012-03-23 20:37:37