【问题标题】:how to get more information from website exploit error messages如何从网站漏洞利用错误消息中获取更多信息
【发布时间】:2013-03-26 00:27:26
【问题描述】:

我从我的 django 网站收到了许多此类错误电子邮件。它们看起来像是由一些自动漏洞触发的。这是一个例子。

Referrer: http://example.com/fck/editor/filemanager/upload/test.html
Requested URL: /fck/editor/filemanager/upload/test.html
User agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90)
IP address: 127.0.0.1

请帮我回答两个问题:

  1. 如何配置 Django 以记录利用者的真实 ip 来源,即类似于 REMOTE_ADDR 而不是 localhost ip 的内容。

  2. 有没有办法一开始就拒绝带有虚假推荐人的请求?请求和引用的 URL 肯定不是来自我自己的 example.com 站点的有效链接,而且从来没有。

谢谢

【问题讨论】:

  • 至少关于 1,你问的是可能的; Django的HttpRequesthas an attribute META是一个包含所有可用HTTP头的字典,可以包括REMOTE_ADDR,并且可以创建custom error reports。但我想知道您是否真正在寻找用于阻止自动攻击的应用程序防火墙(如 mod_security 或 naxsi)。
  • 感谢您将我指向 mod_security 和 naxsi。如果您愿意使用示例自定义错误报告(对于会偶然发现此问题的其他人)写您的评论作为答案,我很乐意接受它作为答案。再次感谢。

标签: django django-urls django-errors django-email


【解决方案1】:

我发现了自己的问题,所以如果其他人需要此信息,这里就...

我一直在错误电子邮件中获取 localhost ip,因为我的 django 服务器位于同一台机器上的反向代理后面。在这种情况下,REMOTE_ADDR 始终是 localhost 地址。

没有模板或自定义错误报告机制可以将其他变量放入断开的链接电子邮件中,因为电子邮件在django的CommonMiddleware中进行了硬编码,之前的cmets中提到的自定义错误报告与此无关。

所以为了得到真实的ip地址,我写了一个中间件将REMOTE_ADDR替换为HTTP_X_FORWARDED_FOR。据说这涉及到一个安全问题,因为HTTP_X_FORWARDED_FOR 很容易被伪造,但这就是在没有 CommonMiddleWare 补丁的情况下实际包含两个 ip 变量的所有事情。

【讨论】:

    猜你喜欢
    • 2016-12-09
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多