我有以下.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页面......
答案 0 :(得分:0)
我认为你不太可能以这种方式成功阻止XSS。如果你看一下OWASP XSS Filter Evasion Cheat Sheet,有许多方法可以绕过简单的XSS过滤器。另外我不得不说我认为GLOBALS和_REQUEST是PHP概念,而不是Apache,因此不会在那里工作,但我可能错了。
您正在尝试做的事情的要点是Web应用程序防火墙正在做的事情。如果你想沿着这条路走下去,我认为你最好将mod_security与OWASP规则集或类似的东西一起使用。
仍然XSS不是输入问题,而是输出问题。当然,您可以通过过滤输入来阻止许多XSS缺陷,但最终通常被视为有效输入的东西也可能导致XSS。
必须处理XSS,用户内容正在呈现给页面,并针对给定的上下文进行适当的编码/转义。