防止PHP / Redis会话D / DoS攻击

问题描述 投票:0回答:1

我已经实现了自己的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个回答
0
投票

我相信我已经在利用防火墙之外找到了解决方案。

在Redis中,对于用户会话和持久会话,我将利用散列并存储用户ID以及任何相关信息。在必须创建新用户或持久会话时,对于存在的任何用户和/或持久会话(取决于是否正在请求用户会话或持久会话)以及是否存在这样的会话,将在Redis中进行查找尚未过期,要么覆盖它,要么删除它并创建一个新的。

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

© www.soinside.com 2019 - 2024. All rights reserved.