重新创建问题的步骤:
- 使用管理员凭据登录并复制会话 Cookie。
- 打开另一个浏览器,以其他用户身份登录,粘贴管理员的会话cookie。 刷新页面。现在,您将 以管理员身份登录。
如何解决这个问题?任何建议都会有很大帮助。
尝试使用事件订阅者在drupal加载cookie会话之前获取上一个会话,但没有运气。
这不是问题,我的意思是,当然,会话劫持是一个非常大的问题 - 但标准防御很好。
这些是我知道广为人知/使用的控件:
- 确保在任何地方都使用 HTTPS,
- 仅对 cookie 值使用安全创建的随机字符串,
- 在所有 Cookie 上设置
secure
标志。这将确保它们仅通过 SSL 连接发送, - 在每次新的登录尝试时更改会话 Cookie。
默认情况下,Drupal 8的所有cookie都是安全的。
例外是BigPipe的no-JS cookie,请参阅 https://www.drupal.org/node/2678628 - 但那里没有安全后果。
我知道一些非常敏感的应用程序也可能为每个会话存储以下附加信息:
- SSL 会话标识
- 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