【问题标题】:ModSecurity error with DjangoDjango 的 ModSecurity 错误
【发布时间】:2011-05-12 08:15:34
【问题描述】:

我正在尝试通过我在 DreamHost 上使用 fb.py 制作的 Facebook 应用程序 (iframe) 访问 Django 页面,但我不断收到内部服务器错误。

查看错误日志,这是我看到的:

ModSecurity:输出过滤器:无法读取存储桶(rc 104):对等方重置连接

我认为它只是与 POST 请求有关。大约一年前,其他人在许多论坛上询问了此错误,但无济于事:

ModSecurity: Output filter: Failed to read bucket (rc 104): Connection reset by peer

我只能在http://www.modsecurity.org找到搜索:

“当 mod_security 拒绝这样的请求时,它会在输出过滤器链中发送一个错误桶,例如代码 403,使 r->status 保持原样(例如 500)。”

有什么想法吗?谢谢!

【问题讨论】:

    标签: python django facebook dreamhost mod-security


    【解决方案1】:

    您是否按照https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax 实施了 CSRF 保护?

    注意与您使用的 Django 版本进行交叉检查。

    【讨论】:

      【解决方案2】:

      所以我花了太多时间试图弄清楚这一点。我已经确定了一个(有点糟糕的)解决方法:将{% csrf_token %} 添加到模板中的任何位置(我假设您将context_instance=RequestContext(request) 参数传递给您的render_to_response 或其他任何地方)。

      我认为正在发生的事情是 cookie 实际上没有设置(这可以通过在任何浏览器的开发工具中检查 cookie 来确认)。将上述代码添加到您的模板会强制执行此操作。我有一种感觉,这可能会在更高版本的 Django 中得到解决,而且似乎对 1.4+ 有明显的修复(例如,参见 here)。不幸的是,dreamhost 让我们坚持使用 1.2.3,所以我们需要凑合着做。

      【讨论】:

      • 这不是“变通办法”,但它是您首先应该做的事情。您需要将{% csrf_token %} 定义为POSTed 的表单的模板添加到您的视图中。自 CSRF 实施以来,您提到的修复程序就一直存在。您也可以在 1.2 中使用它。
      • 我没有从任何教程中得到这种印象——应该注意的是,我的 html 中没有特定的表单。它只是一个 jQuery 处理程序,会在适当的时间触发 POST 请求。我意识到建议在典型表单中插入{% csrf_token %},但是当您没有时,我似乎不清楚。
      • 是的,我已经浏览了该页面数十次。对于 1.2,对于 没有 表单元素的页面似乎没有解决方法。对于更高版本,there are
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      相关资源
      最近更新 更多