我使用php和mysql构建了某种CMS应用程序。一切都在localhost上完美运行,所以我把它移到了网上。现在,当有人添加新文章时,我遇到了奇怪的问题。有时它只是正常添加,有时用户会得到这个错误:
不可接受所请求资源的适当表示 无法在此找到/path_to/file.php 服务器。
经过一段时间在谷歌上,我发现mod_security阻止了我的脚本(或类似的东西)。有什么方法可以看出它为什么会阻止我的剧本?
我对mod_security不是很熟悉,但据我所知,通过执行一些规则,它可以为Web应用程序提供另一层安全性。那么,我可以看到哪个规则阻止了我的应用,以便我可以修复它吗?
其他一些信息:
/path_to/file.php(发生此Not Acceptable错误的文件)是仅与AJAX一起使用的.php文件。我通过POST发送一些数据,我也发送一些文件(图片,文本文件等)。服务器上的文件上载限制为20MB。目前我正在发送17张图片(大约10MB),但它仍然失败(我得到Not Acceptable错误)。但我也试图只发送一张图片和文件,而且没有任何问题。
编辑: 我正在使用共享主机(使用CPanel)。
答案 0 :(得分:1)
mod_security能够记录日志文件中的所有块。您可以在该日志文件中看到它的确切规则。
答案 1 :(得分:1)
在大多数情况下,我使用Emil指出的日志文件。
mod_Security创建两个单独的日志文件,Apache也会在自己的日志中报告错误。两者都很有用。实际上,如果您在Apache中发现错误,它应该为您提供阻止POST运行的规则的mod_security文件和行号。
现在,在大多数情况下,他们检测到一个无效的标头,通常是HTTP协议所期望的某些东西(尽管他们测试了一些不需要的东西但是有99.9%的时间。)
在mod_security提供的两个文件中,并不是不可能创建其中一个文件:审计文件使用非常大量的磁盘空间,因为它将事务的所有详细信息写入磁盘。
如果是POST,变量数量或变量未正确定义是mod_security检测到的常见错误。
在Ubuntu(Debian)上,日志文件最终在/ var / log / apache2 / ...(Apache输出)和/ var / log / apache2-more / ...(mod_security)下。