如果我不按 url 发送会话 ID,我是否需要在登录时循环我的会话 ID

If I don't send session ID by url do I need to cycle my session id on login

我听说我的网站可能会受到以下黑客的攻击:

  1. 转到我的站点开始会话。
  2. 以某种方式让客户使用相同的会话 ID 访问我的站点
  3. 客户端登录
  4. 当攻击者使用会话 ID 返回我的站点时,他可以完全访问该客户帐户。

如果会话 ID 由 url 传递并且循环它是有意义的 (session_regenerate_id),我可以看到这样做,但是如果我只使用 session_start 是否需要这样做而且我在任何时候都没有将会话 ID 放入 url?

好吧,如果会话 ID 仅通过 cookie 传输(不在 URL 中并且您不接受 URL 中的一个)那么防止通过回收会话 ID 进行会话固定攻击。

然而,这仍然是一个很好的做法,因为这也有助于防止会话 cookie 放置较长时间(并且可能由以前的用户放置)。因此,对于大多数安全实践来说,这里是一样的:就去做吧,即使你找不到可能被利用的方法。

除了 session-ID-in-URL 之外,还有会话固定攻击。尤其是浏览器对跨域cookies的控制薄弱

如果攻击者控制了 foo.example.com,例如通过应用程序 运行 中的 XSS 漏洞,他们可以编写带有参数 domain=example.com 的会话 ID cookie,然后将在 bar.example.com 传递给您的应用程序 运行 并且嘿 presto 会话固定。

作为开发人员,您通常无法控制相邻域中可能存在哪些其他易受攻击的应用程序 运行,因此最好假设 cookie 注入可能发生并在 princpal 更改时回收会话。