我目前正在使用会话来处理用户数据,例如:
我想知道的是,如果数据在发送到会话之前被加密,那么重新生成是没有意义的吗?我目前已经设置了从TMP中删除旧会话并创建一个新会话。
有人可以解释一下它对我有什么好处吗?我发现他们喜欢的文档使功能看起来如此重要,非常有帮助! :)
答案 0 :(得分:5)
session_regenerate_id()
实际上并不会阻止会话固定。但是,至少应该在用户登录时调用,以防止“通用”会话固定攻击(1,2)无法正常工作。
PHPSESSID=
参数,将浏览器的会话ID设置(“固定”)为已知值。或者他可以从您的其他子域中设置会话cookie(例如,通过上传带有嵌入式JavaScript的HTML文件)。调用session_regenerate_id()
会阻止第3步成功,因为此时攻击者将不再知道会话ID。
此外,由于子域名可以为父域(也发送到其他子域)设置cookie,因此建议您在众所周知的TLD中的完全独立的域名上托管任何不受信任的内容。为.com
,.net
或.org
。浏览器包含黑名单(例如Public Suffix List),阻止为这些TLD设置Cookie。
例如,exampleusercontent.com
的内容无法设置将发送到example.com
的Cookie。