在我的网站的新服务器,一个centOS,当我尝试通过PHP上传图像和文件名包含一个特殊的字符,如“my'file.jpg”,我得到一个禁止的页面,我甚至不能尝试通过PHP处理错误
在我find的日志文件
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在根文件夹,从类似的问题find,但我得到一个内部服务器错误页面
<Directory /var/www/vhosts/mydomain.com/httpdocs/test-file-upl> <IfModule security2_module> SecRuleRemoveById 330793 </IfModule> </Directory>
在我find的日志
[core:alert] /var/www/vhosts/mydomain.com/httpdocs/.htaccess: <Directory not allowed here
即使我删除了IfModule security2_module部分,错误似乎也会出现
您不能在.htaccess文件中使用Directory指令。
.htaccess文件中的设置范围已经由find.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文件,并将你的设置包含在你的apacheconfiguration文件中。)