gpt4 book ai didi

PHP "Remember Me"安全漏洞?

转载 作者:行者123 更新时间:2023-12-03 01:33:06 26 4
gpt4 key购买 nike

我正在编写一个配备“记住我”的登录表单,到目前为止,我读过的教程(部分是为了确保我做得正确)都说将加密的密码存储在一个 cookie 和用户名。然后,每次 PHP 检查当前用户是否未登录时,检查他们的 cookie 并查找这些值。如果用户名与密码匹配,则您可以加入。

对我来说,这是一个巨大的安全漏洞。如果有人要破解数据库或以某种方式访问​​加密密码,他们甚至不需要破解它们。只需设置您自己的 cookie 即可。我是正确的,还是只是偏执?

我的登录系统使用 session 来跟踪当前用户 ID,并使用 1/0 进行快速登录/注销检查。 AFAIK 用户无法编辑 session ,因此这是安全的(如果不是,请告诉我)。我正在考虑将 session ID 存储在 cookie 中,以便稍后恢复它,但这也不安全。

我非常关心用户的安全,如何在保持网站正常运行的同时正确保护他们的信息?

最佳答案

通常,当服务器被请求记住用户时,它会在正常 session cookie旁边发出一个额外的cookie,并且这个新字符串包含用户名和合理的数量随机字符使其无法猜测。这显然保存在数据库中(出于安全原因,您可能希望将其视为密码,从而对其加盐和散列),并且下次用户使用同一浏览器连接时(假设旧 session 已过期),应用程序会收到随机字符串,检查数据库,如果有匹配,则用户通过身份验证。

另一种方法是将 session 过期时间提前一定时间。

这里有哪些安全漏洞?如果您使用良好的随机生成器,唯一可能发生的情况是用户从共享浏览器访问应用程序,并且在结束时不会手动注销。

由于您处于不安全的 channel 上,因此正常规则始终适用:使用 HTTPS,否则位于您的计算机和服务器之间的任何人都可以窃取 cookie( session cookie 或记住 -我一个)并表现得就像是你一样。

Bonus, this must-read by Jeff Atwood

关于PHP "Remember Me"安全漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14130888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com