.htaccess 查询字符串阻止 phpmyadmin

.htaccess 查询字符串阻止 phpmyadmin

phpmyadmin 登录后,我收到此错误消息

Error in Processing Request
Error: 403
Error text: Forbidden"

我发现从 .htaccess 中删除以下几行不会产生任何错误

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} (\"|%22).*(<|>|%3) [NC,OR]
RewriteCond %{QUERY_STRING} (javascript:).*(\;) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3) [NC,OR]
RewriteCond %{QUERY_STRING} (\\|\.\./|`|=\'$|=%27$) [NC,OR]
RewriteCond %{QUERY_STRING} (\;|\'|\"|%22).*(union|select|insert|drop|update|md5|benchmark|or|and|if) [NC,OR]
RewriteCond %{QUERY_STRING} (base64_encode|localhost|mosconfig) [NC,OR]
RewriteCond %{QUERY_STRING} (boot\.ini|echo.*kae|etc/passwd) [NC,OR]
RewriteCond %{QUERY_STRING} (GLOBALS|REQUEST)(=|\[|%) [NC]
RewriteRule .* - [F]

我已经尝试逐行注释掉这些RewriteCond % 行以隔离确切的行,但除非我删除整个块,否则什么也不会发生。有什么办法可以解决这个问题吗?

答案1

如果您使用的是 Apache 2.2(您尚未指定),请将其临时添加到您的虚拟主机(或 httpd.conf)配置中:

RewriteLog /tmp/rewrite.log
RewriteLogLevel 3

然后重新启动 Apache 并访问该页面,然后再次生成此错误。然后您可以跟踪输出/tmp/rewrite.log以查看究竟是哪个模式被匹配并导致 403。

相关内容