如果用户登录该网站,并说"记住我",我们会获得该用户的唯一标识符,使用密钥大小为256的RijndaelManaged加密,并将其放入一个设置过期的httponly cookie中.120天,每次成功请求刷新到服务器的到期时间.
可选地,我们基于用户代理和ipv4地址的一部分(最后两个八位字节)生成初始化向量.
显然,没有真正的到期系统,用户可以在技术上永远使用这个加密密钥(假设我们不更改服务器端密钥).
我考虑过这样一个事实,即允许这个功能,我需要允许用户绕过登录并给我他们唯一的ID(这是一个guid),我认为单独的guid很难猜到一个真正的用户guid,但是会让网站开放受到生成guid的botnots的攻击(我不知道他们找到一个合法的guid是多么现实)..所以这就是为什么服务器知道加密密钥的加密,以及可选的iv特定于浏览器和ip部分.
我是否应该考虑服务器发出与用户关联的票证的不同方法,并且这些票证将具有已知的到期日期,以便服务器保持对期满的控制权?我真的应该关心到期吗?还记得我记得我吗?
期待被贬低;),干杯.
非常相似的问题.
您的问题的解决方案在此博客文章中
"持久登录Cookie最佳实践"描述了为网站实现熟悉的"记住我"选项的相对安全的方法.在本文中,我提出了一种改进,它保留了该方法的所有好处,但也可以检测持久登录cookie何时被攻击者窃取和使用.
正如Jacco在评论中所说:有关安全认证的深入信息,请阅读网站认证的权威指南.