在我之前创建的网站中,我使用了a user_id 和用户密码的盐渍哈希。我使用两个字段来验证用户的主要原因是因为它省去了添加另一个表的麻烦(从而使数据库设计复杂化。) user_id 也存储在cookie中我可以在users表中进行索引查找,并有效地将salted哈希与用户匹配。当然,您可以将user_id和hash都连接成一个值,然后将其存储在cookie中。
user_id
如果您只是一个随机的不可语句字符串,那么您必须有一个单独的表来将随机字符串与用户ID相关联,并为该特定用户执行另一次查找。
我不是加密专家,但只要你检查强暴尝试,你应该能够使用一个短键(如Gmail的6位数字)。真正的漏洞是人们在用户登录时进行监听(例如,SideJacking)。
在此有力地讨论了这一点 SO线程 。
...用户被视为已通过身份验证。
应该阅读经过身份验证但有限的授权。
每条评论:因为一次性使用而且很难猜测,所以更安全一些。因此,如果cookie被泄露,攻击者必须迅速采取行动,或者合法用户登录将使令牌无效,而用户ID可能不会长时间更改。