当我通过其他页面发布方法发布一些混合数据时html
,我的页面显示错误禁止访问错误。javascript
但是当我直接打开该页面时,它会正确显示而没有任何错误。
当我发布数据时,我知道这是与服务器安全相关的问题。
当我搜索时,我找到了Turn off mod_security in 的解决方案。htaccess
文件 。
但我只想为这个页面而不是为我的完整网站这样做。
我的软管环境是共享的。但我可以编辑我的 . htaccess
文件。
看看一些mod_security 和 .htaccess 技巧。有很多不同的方法可以启用或禁用 mod_sceurity。最简单的可能是将MODSEC_ENABLE
环境变量设置为On
或Off
。您可以使用SetEnvIf来匹配许多事物,包括Request_URI
:
SetEnvIf Request_URI your_page\.php$ MODSEC_ENABLE=Off
或多页:
SetEnvIf Request_URI ^/directory/file.*\.php$ MODSEC_ENABLE=Off
或者,如果您需要做一些更复杂的事情,比如匹配查询字符串,请使用 mod_rewrite:
RewriteEngine On
RewriteCond %{QUERY_STRING} example_param=example_value [NC]
RewriteRule ^path/your_file\.php$ - [E=MODSEC_ENABLE:Off]
您是否启用了 OWASP 核心规则集?检查您的 Apache 错误日志以查看匹配的规则。您可能会发现它也阻止了其他页面上的一些合法用户。与您的托管服务提供商讨论他们使用的规则集以及他们对误报采取的措施。
为了解决您眼前的问题,您可以通过添加新的 URI 来防止被阻止SecRule
(您可以在.htaccess
文件中执行此操作。
SecRule REQUEST_URI "/your/uri" "phase:1,pass"
要将其限制为 POST 请求,您可以使用REQUEST_LINE
:
SecRule REQUEST_LINE "POST /your/uri" "phase:1,pass"
根据当前匹配和阻止请求的规则,您可能必须将这些规则更改为phase:2
甚至添加第二条相同的规则phase:2
。