【问题标题】:Prevent PHP/Redis Session D/DoS attacks防止 PHP/Redis Session D/DoS 攻击
【发布时间】:2019-02-16 15:45:43
【问题描述】:

我已经实现了我自己的 SessionHandlerInterface,它可以读取/写入用户会话和持久会话到 Redis 服务器。用户会话 cookie 设置为在浏览器关闭时过期,因此需要清理关联的 Redis 会话。例如,我可以通过设置 30 分钟的到期时间来清理它,这将导致用户在 30 分钟内收到一个新会话,而不会由于持久会话的存在而中断。在用户登录时,我会自动发出一个持久性 cookie,让他们在几个月内保持登录状态。

如何防止用户以编程方式获取用户会话 cookie 和/或持久性 cookie、将其删除并无限期地继续请求和删除 cookie 的 D/DoS 攻击?本质上是在 Redis 中创建无限数量的孤立用户或持久会话,最终将被清理。即使我将会话 cookie 的生命周期缩短到 1 分钟以在一定程度上降低风险,它仍然会留下一个持久的 cookie 问题,即它们不会设置为几个月后过期。这很容易使我的会话管理器崩溃并阻止所有用户登录。

我知道防火墙已经为此内置了解决方案,但是我想知道如何在应用程序级别缓解这种攻击。

这个问题之前提过:Orphaned Session Management Records in Database. How to handle the issue? DB Stability Risk

【问题讨论】:

    标签: php redis google-cloud-platform session-cookies ddos


    【解决方案1】:

    我相信我已经确定了利用防火墙之外的解决方案。

    在 Redis 中,对于用户会话和持久会话,我将利用哈希并将用户 ID 与任何相关信息一起存储。在必须创建新用户或持久会话时,将在 Redis 中查找任何存在的用户和/或持久会话(取决于正在请求用户会话还是持久会话),如果存在则还没有过期,要么覆盖它,要么删除它并创建一个新的。

    这应该保证一个用户在任何时候都不能存在超过一个用户会话或持久会话,并且应该使任何 DoS 会话攻击无效。

    【讨论】:

      猜你喜欢
      • 2011-04-04
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 2011-10-22
      • 2021-02-20
      相关资源
      最近更新 更多