gpt4 book ai didi

php - PHP session 应该在登录前创建还是登录成功后创建

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:13 29 4
gpt4 key购买 nike

如果PHP session是在登录前创建的,那么每次登录页面的请求都会创建一个session文件。

问题是如果用户通过脚本向服务器发出多个请求,那么将创建那么多 session 文件。
如果用户想攻击服务器,他可以发送异常大量的请求,创建如此多的 session 文件,耗尽所有临时空间并使服务不可用。
我不确定这种攻击是否真的可能/可行。

如果在成功登录之前/之后创建 PHP session ,请分享您对此的评论和影响。

最佳答案

我认为你误解了session_start()

session_start 会发生什么,是的,它将为单个用户创建一个文件。但是下次你调用 session_start() 时,它将为同一个用户使用同一个文件,因为用户在他们的系统上有一个 cookie 告诉它使用什么 ID。为了使 $_SESSION 数组可用,您必须在每个页面上调用 session_start()。

很有可能有人会想出您刚才描述的场景。

实际上,是的,黑客总是可以让机器人在每次尝试后清除其 cookie,发出 10,000 次请求,并可能造成磁盘写入问题,但我真的不会太担心,因为文件很小,比您正在编写的脚本小得多。您必须编写更多的文件(大小为数百万或数十亿)才能真正产生问题。

如果你真的想看看对你的服务器有什么影响。编写一个脚本,在目录中创建相当于 2 段文本的文件。并将其放入 10,000 个文件的循环中。

如果您随后担心它会产生的影响,我建议实现一个跟踪器,它可以看到来自单个 IP 地址的大量点击,然后暂时禁止该 IP 地址,或者执行 Google 的操作确实,只是为他们提供一个静态验证码页面,该页面不需要很多资源即可提供服务。

那么,回到实际的“问题”:

我为访问过我网站的每个用户都设置了一个 session ,因为我不仅将 session 用于用户身份验证,还用于跟踪我网站上的其他变量。因此,我认为即使他们没有登录,您也应该设置它。

关于php - PHP session 应该在登录前创建还是登录成功后创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1233347/

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