题
我只是实现一个"记住我"功能,对用户登录在网站上。大多数建议是有用户名,存储在一个饼干,然后有一些长,难以猜测的随机的关键。如果这两个的比赛了,则认为用户认证。
并具有两个串的实际帮助吗?不会更长的关键做同样的事情?
换句话说,不是两个关键,同样容易受到攻击,为一个更长的钥匙?(我想这将是总长度的关键,无论你有多少)
注: 可能有一些数据库查询的效率问题在这里也一样,例如,寻找一个很大的usb驱在该数据库是不容易的,因为在寻找一个小数字。(关切的注意、主题采用一项六位数字,作为他们的一次登录令牌沿用的用户名。)
解决方案
稳健的讨论,在这个 因此线.
...用户视为身份验证。
也许应该读取身份验证,但有限的authoriziation.
每评论:有些更加安全,因为它是一个时间使用,它是难以猜测。因此,如果cookie遭到破坏,攻击者迅速采取行动或令将失效,通过合法用户登录电子中,而userid可能不会改变很长一段时间。
其他提示
我不是密码专家,但只要你检查暴力破解尝试,你应该能够使用快捷键(如Gmail的6位数字)。实际的安全漏洞是人收听时在(例如SideJacking)。
用户登录在网站我以前创建我做了使用user_id
和用户密码的哈希咸的。主要的原因我用两个字段来验证用户是因为它救了我加入另一个表与user_id
也被存储在cookie中的麻烦(因此数据库的设计复杂化。)我能做到在用户的索引查找表和有效地匹配盐渍散列给用户。当然你可以串连两个USER_ID和散列成一个值,只是存储在cookie中。
如果你只是有一个随机字符串,难以猜测的,那么你就必须有一个单独的表与用户ID的随机字符串关联,做一套查找该特定用户。
不隶属于 StackOverflow