【问题标题】:Mod_security is sometimes blocking my ajax script - how can I find out why?Mod_security 有时会阻止我的 ajax 脚本 - 我怎样才能找出原因?
【发布时间】:2012-06-02 16:57:19
【问题描述】:

我已经使用 php 和 mysql 构建了某种 CMS 应用程序。一切都在 localhost 上运行良好,所以我把它移到了网络上。现在,当有人添加新文章时,我遇到了奇怪的问题。有时它只是正常添加,有时用户得到这个错误:

不可接受 请求资源的适当表示 /path_to/file.php 在此找不到 服务器。

在 Google 上呆了一段时间后,我发现 mod_security 正在阻止我的脚本(或类似的东西)。有什么方法可以让我看到它为什么会阻止我的脚本?

我对 mod_security 不是很熟悉,但据我了解,它通过强制执行一些规则来为 Web 应用程序提供另一个级别的安全性。那么我可以查看哪个规则阻止了我的应用以便我修复它吗?

一些附加信息:

/path_to/file.php(发生此 Not Acceptable 错误的文件)是仅用于 AJAX 的 .php 文件。我通过 POST 向它发送一些数据,并且我也在发送一些文件(图片、文本文档等)。服务器上的文件上传限制为 20MB。目前我正在发送 17 张图片(约 10MB),但仍然失败(我收到 Not Acceptable 错误)。但是我也尝试过只发送一张图片和文件,并且没有问题。

编辑: 我正在使用共享主机(使用 CPanel)。

【问题讨论】:

    标签: php mod-security


    【解决方案1】:

    mod_security 能够在日志文件中记录所有块。您可以在该日志文件中确切地看到它是什么规则。

    【讨论】:

    • 在哪里可以找到它的日志?或者如果我使用 CPanel 的共享主机,我可以吗?
    • 在这种情况下,您应该询问托管服务提供商。毕竟,你是在为他们的支持付出代价。
    【解决方案2】:

    在大多数情况下,我使用 Emil 指出的日志文件。

    mod_Security 创建两个单独的日志文件,并且 Apache 在自己的日志中报告错误。两者都有用。实际上,如果您在 Apache 中发现错误,它应该为您提供 mod_security 文件和阻止您的 POST 工作的规则的行号。

    现在,在大多数情况下,他们检测到无效的标头,通常缺少 HTTP 协议所期望的某些内容(尽管他们测试了一些不需要但 99.9% 的时间存在的内容。)

    在 mod_security 提供的两个文件中,不太可能没有创建其中一个:审计文件在将交易的所有详细信息写入磁盘时会占用大量磁盘空间。

    在 POST 的情况下,变量的数量或变量未正确定义是 mod_security 检测到的常见错误。

    在 Ubuntu (Debian) 上,日志文件最终位于 /var/log/apache2/...(Apache 输出)和 /var/log/apache2-more/...(mod_security)下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多