这是实现“记住我”功能的合理方式吗?

时间:2009-03-27 12:03:56

标签: security authentication rijndaelmanaged remember-me

如果用户登录该站点并说“记住我”,我们会获得该用户的唯一标识符,使用密钥大小为256的RijndaelManaged加密,并将其放置在设置为exp的设置过期的httponly cookie中。 120天,到期时刷新每次成功请求到服务器。

可选地,我们基于用户代理和ipv4地址的一部分(最后两个八位字节)生成初始化向量。

显然没有内置真正的过期系统,用户可以在技术上永远使用这个加密密钥(假设我们不更改服务器端密钥)..

我考虑过这样一个事实:为了允许这个功能,我需要允许用户绕过登录并给我他们唯一的ID(这是一个guid),我认为单独的guid很难猜到一个真实的用户guid,但会让网站开放攻击由botnots生成guid(我不知道他们找到一个合法的guid是多么现实)..所以这就是为什么服务器知道加密密钥的加密,以及可选地,iv特定于浏览器和ip部分。

我是否应该考虑服务器发出与用户关联的故障单的不同方法,并且这些故障单将具有已知的到期日期,以便服务器保持对期满的控制权?我真的应该关心到期吗?还记得我记得我吗?

期待被贬低;), 欢呼声。

3 个答案:

答案 0 :(得分:6)

Very similar question.

您的问题的解决方案在blog post

  

“持久登录Cookie最佳   实践,“描述一个相对   安全的实施方法   熟悉的“记住我”网络选项   站点。在这篇文章中,我提出了一个   保留所有的改进   这种方法的好处,但也   可以检测何时a   持久登录cookie已经   被攻击者窃取并使用。

正如Jacco在评论中所说:有关安全身份验证的深入信息,请阅读The Definitive Guide To Website Authentication

答案 1 :(得分:0)

您是否考虑过像Open Id这样的内容?因为SO使用。

答案 2 :(得分:0)

记住的信息有多重要?如果它不是任何非常个人或重要的东西,只需在cookie中添加一个GUID。

在计算中包含IP地址可能是一个坏主意,因为它会立即忘记使用公共网络的用户。

使用强力查找GUID是荒谬的,因为有2个 128 的可能性。