我需要$_SESSION
在 PHP 中的变量上放置一些重要数据,并且想知道这些数据是否安全。客户是否能够看到此$_SESSION
变量中的信息?在会话内存储敏感数据是否有任何安全隐患?
2 回答
不,客户端无法看到会话数据,因为它存储在服务器端。然而:
如果您在共享服务器上,则与您共享服务器的其他人能够访问它并非不可能。
此外,会话数据使用存储在客户端 cookie 中的会话 ID 与用户绑定。如果 Bob 能够获得 Alice 的 cookie,他将能够冒充她。
如果我不提出一些解决方案,我想我的答案是不完整的,所以:
要解决第一个问题,您应该将加密数据存储在会话中。
要解决第二个问题,您还应该比较 IP 地址等其他信息,以确保 Bob 没有尝试使用其他人的 cookie。这样,如果 Bob 窃取了 Alice 的 cookie,您就可以将 Bob 的 IP 与您存储在会话中的 Alice 的 IP 进行比较,并找出不匹配的地方。
确实,您应该采取措施使会话更加安全..
1) 仅通过 httponly cookie 使用会话 ID,并通过 url 禁用会话 ID ..
2) 将 session_save_path 设置为公共索引之外的新位置。如果您在共享主机上。他们不能使用会话注入来查看会话中的内容。更好..使用数据库作为会话处理程序..
3)禁用你的web服务器的http方法TRACE、TRACK、HEADER,如果攻击者可以包含一些java、flash或ajax,用户的http cookie也可以被窃取。
4)在IP用户代理或某种指纹上锁定会话......
5) 更新所有请求的 session_id 以使 session id 暴力破解更加困难