.htaccess添加新规则以停止XSS

时间:2016-06-03 13:42:43

标签: wordpress .htaccess xss

我有以下.htaccess文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /generation/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /generation/index.php [L]
</IfModule>

# END WordPress
Options -Indexes

# Turn off display_errors
php_flag display_errors off​

然后我想将它与这个例子结合起来:停止常见的XSS攻击

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F,L]
</IfModule>

如何将第二个规则合并到新规则中。如果我只是添加那些查询字符串,那么页面内的链接只返回404页面......

1 个答案:

答案 0 :(得分:0)

我认为你不太可能以这种方式成功阻止XSS。如果你看一下OWASP XSS Filter Evasion Cheat Sheet,有许多方法可以绕过简单的XSS过滤器。另外我不得不说我认为GLOBALS和_REQUEST是PHP概念,而不是Apache,因此不会在那里工作,但我可能错了。

您正在尝试做的事情的要点是Web应用程序防火墙正在做的事情。如果你想沿着这条路走下去,我认为你最好将mod_security与OWASP规则集或类似的东西一起使用。

仍然XSS不是输入问题,而是输出问题。当然,您可以通过过滤输入来阻止许多XSS缺陷,但最终通常被视为有效输入的东西也可能导致XSS。

必须处理XSS,用户内容正在呈现给页面,并针对给定的上下文进行适当的编码/转义。