1

我已经使用 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)。

4

2 回答 2

1

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

于 2012-06-02T17:04:31.513 回答
1

在大多数情况下,我使用 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)下。

于 2012-06-16T20:55:30.753 回答