会话重建的好处?

时间:2011-02-08 04:21:48

标签: php

我目前正在使用会话来处理用户数据,例如:

  • 用户名
  • 密码
  • 名称
  • 权限

我想知道的是,如果数据在发送到会话之前被加密,那么重新生成是没有意义的吗?我目前已经设置了从TMP中删除旧会话并创建一个新会话。

有人可以解释一下它对我有什么好处吗?我发现他们喜欢的文档使功能看起来如此重要,非常有帮助! :)

1 个答案:

答案 0 :(得分:5)

session_regenerate_id()实际上并不会阻止会话固定。但是,至少应该在用户登录时调用,以防止“通用”会话固定攻击(12)无法正常工作。

  1. 攻击者在他发送给用户的URL中包含PHPSESSID=参数,将浏览器的会话ID设置(“固定”)为已知值。或者他可以从您的其他子域中设置会话cookie(例如,通过上传带有嵌入式JavaScript的HTML文件)。
  2. 他等到用户在该会话下登录。
  3. 他使用已知的会话ID来劫持用户的帐户。
  4. 调用session_regenerate_id()会阻止第3步成功,因为此时攻击者将不再知道会话ID。

    此外,由于子域名可以为父域(也发送到其他子域)设置cookie,因此建议您在众所周知的TLD中的完全独立的域名上托管任何不受信任的内容。为.com.net.org。浏览器包含黑名单(例如Public Suffix List),阻止为这些TLD设置Cookie。

    例如,exampleusercontent.com的内容无法设置将发送到example.com的Cookie。