这个问题是另一个问题的延伸(Symfony framework install 406 Not Acceptable Error w/CPanel & WHM),请在那里阅读我的答案,看看我是如何解决这个问题的。
我能够解决我遇到的406错误的问题,但需要付出代价......,我不得不在WHM中禁用mod安全性,这是一个巨大的安全漏洞,我确定。我的问题是如何启用mod安全性并仍然使用默认的Symfony安装,以便我不再收到406错误?
修改
ModSecurity日志
请求:GET /操作描述:使用代码406拒绝访问(阶段4)。理由:模式匹配" ^ 5 \ d {2} $"在RESPONSE_STATUS
答案 0 :(得分:1)
<强>背景强>
ModSecurity是Web应用程序防火墙(或WAF)。您可以定义规则以尝试识别和阻止非法请求。虽然WAF并不完美,但通常使用的通用规则适用于大多数网站&#34;但有时会阻止合法请求(称为误报)。
首先要了解的是,除了您之外,没有人会知道您安装的ModSecurity规则。 ModSecurity根本没有任何规则,尽管有可供下载的规则,从免费的规则(如OWASP CRS)到付费的Atomic之类的规则,或者您可以编写自己的规则。因此,向您解释的第一件事是,没有人能够告诉您如何解决此问题,因为根据您的安装情况,它可能是特定于您的。说我们可以指导您找到自己的解决方案。
运行WAF确实提供了额外的保护,但确实需要大量维护。虽然我个人喜欢它并且可以看到它的优点,但是大多数网站都没有它是诚实的,而且如果你让你的软件保持最新状态,那么黑客无论如何也是罕见的(尽管不是闻所未闻)。 ; t安装高目标软件(例如WordPress)。根据您的网站需要的重要性和安全性来决定是否保留它,但是,如果想要使用它,那么您将需要了解它如何处理这样的问题。< / p>
您的问题。
我不熟悉Symfony,但是当我启用ModSecurity时,我可以理解,您的应用程序失败并且至少有一个ModSecurity规则触发。当ModSecurity关闭时,一切正常。
首先,您需要找出阻止您的应用程序运行的 ALL 规则。你已经给出了一条规则,但我怀疑这不是唯一一条规则。
正如我在原始问题的评论中所讨论的那样,该规则是大多数规则集中的一个相当标准的规则,旨在防止信息泄露。对于每个请求,所有Web服务器都以3位status code响应。最着名的是404或&#34;页面未找到&#34;。 500范围内的那些意味着服务器错误。所以这个规则说如果服务器响应(RESPONSE_STATUS)模式匹配&#34; ^ 5 \ d {2} $&#34; (即5XX是X是一个数字,所以0-9)然后出现了问题,并且ModSecurity介入以防止任何错误消息返回给用户,而是发送它自己的406错误消息。
ModSecurity有5个阶段:
此规则在阶段4中触发 - 即将请求发送回客户端时。因此,在此阶段,您的应用程序返回5XX状态已经出错了。
我怀疑之前触发的另一个ModSecurity规则(阶段1或阶段2规则)导致了错误,并且您只显示了最后触发的规则。
在我能够帮助您解决问题之前,我需要知道:
有了这个我或其他人,也许可以帮助你找到正确的方向。
如何自我诊断此问题(以及未来的问题!)
如果我是你,我会采取以下步骤来确定问题:
ModSecurity Reference Manual是了解ModSecurity的非常有用的资源。
我还可以推荐the ModSecurity handbook进一步阅读。它是由ModSecurity的原作者编写的,虽然从版本2.7开始它还没有更新,但它仍然是一个很好的介绍。
希望有所帮助, 百里