【发布时间】:2012-10-26 21:12:30
【问题描述】:
我正处于一个项目的开始阶段,当用户进行身份验证时,该项目将具有“记住我”选项。
我的用户的数据库表具有以下用于身份验证的基本结构:
- id : 用户注册时生成的随机数。 (键)
- username :用户选择的用户名,可以更改为另一个唯一的用户名。
- hash : 设置密码时使用“phpass”创建的密码的哈希值。
我想知道一种使用 cookie 和 MySQL 让用户保持登录状态的安全方法,即使在多台计算机上也是如此。
我希望我可以使用相同的 cookie 来存储临时会话或“记住我”部分。我已经阅读了有关令牌以及将所有用户信息散列到 cookie 中的信息,但它安全吗?我检查了用户身份验证后使用的 Facebook cookie,并且有用户 ID 输入,我想做什么真的有必要吗?
如果我决定将信息散列到 cookie,我应该使用可能更慢的“phpass”还是简单的 MD5 函数,看到身份验证验证将在每个页面和每个 AJAX 请求中进行?每次验证登录时是否应该更新用户令牌?
最后,我的最佳选择是什么?我知道有很多类似的问题,但我没有找到类似“最好的方法”来做到这一点。在每一篇文章中,我都发现这个主题有一些不同和矛盾的地方。我想知道一种安全且干净的方法。
【问题讨论】: