gpt4 book ai didi

php - 防止 PHP/Redis Session D/DoS 攻击

转载 作者:可可西里 更新时间:2023-11-01 11:23:49 26 4
gpt4 key购买 nike

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

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

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

此问题之前已提出:Orphaned Session Management Records in Database. How to handle the issue? DB Stability Risk

最佳答案

我相信我有一个在利用防火墙之外的解决方案。

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

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

关于php - 防止 PHP/Redis Session D/DoS 攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54724814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com