我可以通过 .htaccess 禁用 ModSecurity 规则吗?

我可以通过 .htaccess 禁用 ModSecurity 规则吗?

在我的网站的新服务器 centOS 上,当我尝试通过 PHP 上传图像并且文件名包含特殊字符(如“my'file.jpg”)时,我收到禁止页面,我甚至无法尝试通过 PHP 处理错误

在日志文件中我发现

ModSecurity: Access denied with code 403 (phase 2). Match of "eq 0" against "MULTIPART_STRICT_ERROR" required. [file "/etc/httpd/modsec/00_asl_zz_strict.conf"] [line "53"] [id "330793"] [rev "2"] [msg "Multipart request body failed strict validation: PE 0, BQ 0, BW 0, DB 0, DA 0, HF 0, LF 0, SM , IQ 1, IH 0, IP 0, FL 0"] [severity "CRITICAL"]

在联系服务器支持团队之前,我想知道是否可以通过 .htaccess 或 Plesk 12 面板禁用某些目录的此规则

我尝试在根文件夹的 .htaccess 中添加此文件,这是从类似的问题中找到的,但我收到了内部服务器错误页面

<Directory /var/www/vhosts/mydomain.com/httpdocs/test-file-upl>
 <IfModule security2_module>
    SecRuleRemoveById 330793        
 </IfModule>
</Directory>

在日志中我发现

[core:alert] /var/www/vhosts/mydomain.com/httpdocs/.htaccess: <Directory not allowed here

即使我删除 IfModule security2_module 部分,似乎仍会出现错误

答案1

你不能使用Directory.htaccess文件中的指令。

文件中设置的范围.htaccess已由文件.htaccess所在的目录定义。

换句话说,中的设置/var/www/vhosts/mydomain.com/httpdocs/.htaccess对于目录/var/www/vhosts/mydomain.com/httpdocs/及其所有子目录均有效。

如果您想将设置应用于 /var/www/vhosts/mydomain.com/httpdocs/test-file-upl,则需要将您的设置放在文件中/var/www/vhosts/mydomain.com/httpdocs/test-file-upl/.htaccess,其形式如下:

<IfModule security2_module>
    SecRuleRemoveById 330793        
</IfModule>

(或者更好的是,根本不要依赖 .htaccess 文件并将您的设置包含在您的 apache 配置文件中。)

相关内容