我有一个 Django 服务器在 nginx 代理后面运行。我目前正在尝试通过读取来确定远程地址request.META['REMOTE_ADDR']
。更准确地说:一个限制尝试暴力破解我的用户密码的应用程序(Django-brutebuster)正在这样做。
由于 Django 在 nginx 后面,REMOTE_ADDR
因此是 Nginx 的地址(127.0.0.1),所以这并不是很有帮助。它还通过故意猜错密码打开了我的 DOS 应用程序,因为从蛮力破坏者的角度来看,每个人都在同一个 IP 上。
我在这个论坛上发现了类似的问题:
我想拼图的部分可以在上面找到。但是,我也认为他们为新的攻击向量打开了应用程序。具体来说,如果 Django 出于某种原因没有在 nginx 后面运行,那么自动检查 X-something 标头会从客户端打开欺骗这些标头。
令我有些惊讶的是,在上述任何问题和答案中似乎都没有提到“正确且唯一的方法”(TM)。Django 没有针对此问题的规范解决方案吗?除此之外,我们能否提出一个至少不会造成安全问题的解决方案?