我遇到了一个主要的问题,我认为这是Apache和SSL之间的问题。 Apache 和 SSL本身都适用于我的网站;它是我尝试将数据从AJAX函数提交到PHP脚本导致错误 403 Forbidden 的结果。
我在没有SSL的开发服务器上构建了一个站点,然后使用完全相同的代码,软件和权限将服务器复制到一个新的框中。启用SSL与证书的唯一区别,现在只有当数据包含三个(可能更多)字符之一时,使用AJAX允许用户提交的站点部分才会返回403:
如果用户使用这三个字符中的任何一个提交任何数据,则服务器在提交之前返回错误403,甚至命中PHP脚本。如果他们不使用任何字符,则提交正确。
研究
我的研究并没有多大帮助,但我确实发现并试了一些东西,其中没有一个起作用:
有人提到Apache的 mod_secure 可能会导致某些误报,但我没有安装它来禁用它。
我发现有时这个问题是由权限引起的,但所有权限都是正确的;加上它使用相同的权限和代码完全正常工作的服务器的复制。
我读到将 apache2.conf 文件中的目录参数从要求全部拒绝更改为需要全部授予可能有所帮助,但事实并非如此。我甚至为发生问题的特定目录设置了它,仍然没有帮助。
我尝试更改脚本以将特殊字符转换为其html实体,但由于它仍然添加了&#34 ;;"分号,如" quot;"在提交时会抛出403.
我查看了apache错误日志,但是没有任何与我有关的错误403进行调试。所有其他错误报告都很好。
我在这里完全失败了。我的假设是服务器阻止那些认为它是XSS / SQL注入攻击的特定字符。
方案吗
是否有某个配置文件,对于Apache,SSL或者甚至PHP,我可以查看它是什么阻止它甚至可以禁用它们或添加一种白名单规则?
感谢您提供任何帮助!
找到解决方案
此问题的解决方案是将防火墙上的内容过滤器从非常严格的过滤器编辑为基本过滤器。感谢 user2182349 指出防火墙!