会话 ID 太长或包含非法字符,有效字符为 a-z、A-Z、0-9 和'-,'

2022-08-30 15:01:29

如何解决:

警告:session_start() [function.session-start]:会话 ID 太长或包含非法字符,有效字符为 a-z、A-Z、0-9 和 '-,'在 .....在 3 号线

警告:session_start() [function.session-start]:无法发送会话 cookie - 标头已由 发送(输出开始于 ......:3) 在 .....在 3 号线

警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 标头已发送(输出在 .....:3) 在 .....在 3 号线


答案 1

这是一个信息漏洞:恶意攻击者可能会更改cookie并将非法字符分配给PHPSESSID以暴露此PHP警告,该警告实际上包含文件路径和用户名等多汁信息!


答案 2

此问题有一个错误报告(https://bugs.php.net/bug.php?id=68063)

您可以检查session_start是否成功,并在需要时生成 ID:

$ok = @session_start();
if(!$ok){
session_regenerate_id(true); // replace the Session ID
session_start(); 
}

推荐