我正在尝试编写一些替换REQUEST_URI参数中某些字符的.htaccess规则。具体来说,我想替换以下内容:
<
>
'
"
)
(
示例网址可以是http://www.example.com/?<script>alert(1)</script>&q=")("<script')
我尝试了很多方法但没有成功。有人能指出我正确的方向吗?感谢。
答案 0 :(得分:1)
您可以使用mod_rewrite执行此替换,请参阅<
的此示例:
RewriteCond %{QUERY_STRING} ^([^<]*)<([^<]*)<(.*)
RewriteRule ^ %{REQUEST_URI}?%1<%2< [N]
RewriteCond %{QUERY_STRING} ^([^<]*)<([^<]*)$
RewriteRule ^ %{REQUEST_URI}?%1<%2 [L]
第一个规则将一次替换两个<
个字符,第二个规则将结束递归。其他字符可以用相同的方式替换(只需用其他对替换<
和<
)。
但是使用mod_rewrite进行这种工作并不合适,因为
虽然第二种陈述在这种情况下不适用,因为使用了N flag,我不建议将mod_rewrite用于此类工作。
我宁愿建议在Web应用程序中执行此操作,可能只是在将数据输出到HTML文档之前,而不是以预防方式处理每个输入,无论数据如何处理。