PHP会话应该在登录之前创建还是在成功登录之后创建

PHP会话应该在登录之前创建还是在成功登录之后创建,php,session,cookies,Php,Session,Cookies,如果在登录之前创建了PHP会话,则会为每个登录请求页面创建一个会话文件。 问题是,如果用户通过一个脚本向服务器发出多个请求,那么将创建多个会话文件。 如果用户想要攻击服务器,他可以发送异常大量的请求,创建大量会话文件,占用所有临时空间,使服务不可用。 我不确定这种攻击是否真的可能/可行 如果PHP会话是在成功登录之前/之后创建的,请分享您对此的评论和影响。一旦您运行会话,\u start()将创建文件。 作为一种攻击,您可以创建一个robot来在cookie中发送单独的会话id,但只需提供一个存

如果在登录之前创建了PHP会话,则会为每个登录请求页面创建一个会话文件。

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


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

一旦您运行会话,\u start()将创建文件。
作为一种攻击,您可以创建一个robot来在cookie中发送单独的会话id,但只需提供一个存在的会话id即可。

我认为您误解了会话启动()

会话_start的作用是,是的,它将为单个用户创建一个文件。但是下次调用session_start()时,它将为同一用户使用相同的文件,因为该用户的系统上有一个cookie,告诉它要使用哪个ID。为了使$\u会话数组可用,必须在每个页面上调用会话\u start()

很有可能有人会想出你刚才描述的情景

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

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

如果你担心它会带来什么影响,我建议你安装一个跟踪器,可以看到大量点击从一个IP地址进入网站,然后暂时禁止该IP地址,或者像谷歌那样,只为他们提供一个静态验证码页面,而不需要太多资源

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


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

真的没关系。您的服务器尽可能便宜,将有足够的空间存储数百万(几乎是空的)会话文件


它能做的最糟糕的事情是减慢存储会话文件的文件夹中的文件访问速度,但首先应该监视服务器的磁盘,快速填充/tmp分区会在某个时候发出警报。

如果您担心会话固定攻击,请考虑使用该功能