在我的网站的新服务器 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 配置文件中。)