更改会话 Cookie 后,有没有办法检查用户的真实性?

Is there a way to check the authenticity of the user, after changing the Session Cookie?

重现问题的步骤:

如何解决这个问题?任何建议都会有很大帮助。

尝试在 drupal 加载 cookie 会话之前使用事件订阅者获取之前的会话,但没有成功。

这不是问题,我的意思是,会话劫持当然是一个非常大的问题 - 但标准防御措施很好。

这些是我所知道的广泛使用的控件known/used:

  • 确保到处都使用 HTTPS,
  • 只使用安全创建的随机字符串作为 cookie 值,
  • 在所有 cookie 上设置 secure 标志。这将确保它们仅通过 SSL 连接发送,
  • 在每次新登录尝试时更改会话 cookie。

默认情况下,Drupal 8 的所有 cookie 都是安全的。

例外是 BigPipe 的无 JS cookie,请参阅 https://www.drupal.org/node/2678628 — 但那里没有安全后果。


我知道一些非常敏感的应用程序可能还会为每个会话存储以下附加信息:

  • SSL 会话 ID
  • HTTP 用户代理
  • 远程 IP 地址

在我看来,我不会费心检查 HTTP 用户代理或远程 IP 地址。它们不会增加那么多安全性,并且会在某些情况下破坏合法使用。从安全角度来看,检查 SSL 会话 ID(SSL 会话绑定)是可以的,但实施起来可能会很痛苦,其他防御措施都很好。


如果您担心通过 XSS 窃取 Cookie,最好的防御方法是使用标准方法来避免 Web 应用程序中的 XSS 错误。请参阅 OWASP 以获得大量优秀资源。


您可能会在此处找到许多为 Drupal 8 编写安全代码的最佳实践:https://www.drupal.org/docs/8/security/writing-secure-code-for-drupal-8

您可能还会在此处的 Drupal 上找到关于此的相当古老的讨论:https://www.drupal.org/project/drupal/issues/19845