在过去大多数关于登录系统中“记住我”功能的安全性问题上,建议使用Persistent Login Cookie Best Practice。
如果我理解正确,这种方法是这样的:
如果用户检查以记住密码,则应设置包含用户名,后跟分隔符和一些大随机数的cookie。例如:
$_COOKIE["login"]; ="adam:8794383bb07608636dab808df6c9e29c"
是这样吗?
正如我之前的问题,我被告知如果有人可以访问cookie,他们可以轻松进行身份验证。那么这种方法如何解决这个问题?
非常感谢。
答案 0 :(得分:2)
实际上,这是我推荐的。示例DB架构
用户:
过程:
您永远不会想要在Cookie中存储用户名或密码,因为如果您不使用SSL,它们很容易被盗。使用唯一的哈希并在每次登录时清除它可以解决这些问题:1)它可以防止auth详细信息泄漏,2)它使自动登录只有一次有效(cookie不能被盗并再次使用),3)它强制执行一个艰难的过期日期服务器端有助于防止滥用,4)并且很难无法猜测长的唯一ID,因此黑客必须实际窃取cookie以获取访问权。
编辑:如果您想要更高的安全性,请记下在用户更改密码时清除哈希值。如果用户因为担心密码被泄露而更改了密码,则不希望有效的自动登录哈希值浮动。
答案 1 :(得分:1)
4)。您确实需要更新哈希值,否则此人不会再次自动登录。
5)。您应该进行清理,但如果无效,则您的代码不应将其处理为有效。
至于使用该cookie阻止其他人登录,你可以做...