我今天注意到,在我的会话文件中,有一些文件名远远小于其他文件,例如:
标准会话文件:
Run Code Online (Sandbox Code Playgroud)sess_0020cc255681808f78c08b67cd88cbcea13f45ee7629754ed82ccb8b010cf83d2b353b7136847f2876d99f3297a5def5bcc62b433d6d56d7f1b301f82c833aad(5 + 128个字符文件长度)
特殊会话文件:
Run Code Online (Sandbox Code Playgroud)sess_629aca24e094f17d02b3d105ebe9e5d4(5 + 32字符文件长度)
这个站点非常繁忙并且有很多流量(约22k访问者pcm),查看会话文件夹有~1%(实际上是0.92%)这些非常短的命名会话文件.
在去年(2015年)实施本网站重新设计之前,我过去曾经阅读了很多会议,并且从那里开始,我现在已经在我的php.ini:
session.cookie_httponly=1
session.use_only_cookies=1
session.cookie_secure=1
session.entropy_file=/dev/urandom
session.hash_function=whirlpool
session.session.use_trans_sid=0
session.entropy_length=32
Run Code Online (Sandbox Code Playgroud)
编辑(附加):
session.hash_bits_per_character = 4
Run Code Online (Sandbox Code Playgroud)
session.sid_length 未定义(不可定义),因为此构建使用PHP 5.6.2
据我所知,这应该是一般的罚款.我已经阅读了很少有关如何确保最小文件长度的其他主题,尽管我已经阅读了有关使用的各种内容,session.entropy_length但这似乎并不明显适用于此问题.
entropy_length值是我唯一不确定其使用和需要的值.
我意识到以下问题我可以尝试并看到它不会造成任何伤害,但如果上述解决方案是预期用途 session.entropy_length ,那将是有用的知识.关于什么是entropy_length实际上是非常实用的文献似乎很少.
我认为会话名称冲突当前存在一个小的潜在问题,而且看起来很奇怪,如此多的会话文件如此奇妙地长,但是一个值得注意的少数群体相对较小.
更新
从评论中有一些细节,值得我总结一下:
htaccess文件没有对PHP的任何方面进行任何更改/temp.如果您的网站与您描述的一样受欢迎,这很可能是黑客/黑客攻击.黑客将定期访问网站并使用捕获的(在这种情况下)欺骗会话ID,他们将欺骗正常的32字节十六进制.
如果您修改cookie"PHPSESSID"以包含任何文本,PHP会选择它并创建具有该ID的会话以及相应的sess_ [sessionId]文件.从我的测试(你可以自己尝试)PHP将使用任何长度的ID并接受它并使用它,无论ini设置.
好消息是,如果你这样做,session_id()那么它将返回欺骗性的ID,这样你就可以了
但这不会停止正在创建的会话文件.
或者创建自己的会话处理系统并避免session_start(); 然后您可以在使用之前手动验证session_id格式.