.htaccess逃逸期

.htaccess逃逸期,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我最近遇到了一次RFI攻击,其中查询字符串包含大量../../../,我想修改.htaccess以防止查询字符串中出现任何../ 我一直在尝试这一点,直到我意识到这段时间需要逃避: RewriteCond %{QUERY_STRING} ../ RewriteRule .* - [F] 然后我把它改成: RewriteCond %{QUERY_STRING} \.\./ RewriteRule .* - [F] 但它仍然禁止查询字符串中的任何/ 另外,如果我在{REQUEST\u URI}中

我最近遇到了一次RFI攻击,其中查询字符串包含大量../../../,我想修改.htaccess以防止查询字符串中出现任何../

我一直在尝试这一点,直到我意识到这段时间需要逃避:

RewriteCond %{QUERY_STRING} ../
RewriteRule .* - [F]
然后我把它改成:

RewriteCond %{QUERY_STRING} \.\./
RewriteRule .* - [F]
但它仍然禁止查询字符串中的任何/

另外,如果我在
{REQUEST\u URI}
中有规则,这会使
{QUERY\u STRING}
多余吗

谢谢

编辑:

我通过以下方式成功地实现了这一目标:

RewriteCond %{QUERY_STRING} (\.\./)

但是,
RewriteCond%{REQUEST\u URI}\.\./
RewriteCond%{REQUEST\u URI}(\.\.\./)
没有。我还尝试了
/\.\./
&
(/\.\./)

之后是
%{QUERY\u STRING}
,因此您的规则成功地阻止了类似htis的URL:

http://domain.com/blah.php?../../../path
但是您的URI不会被检查。您可以通过修改规则来检查这两种情况:

RewriteCond %{QUERY_STRING} \.\./ [OR]
RewriteCond %{REQUEST_URI} \.\./ 
RewriteRule .* - [F]

{REQUEST\u URI}
会包括
{HTTP\u HOST}
之后和
{QUERY\u STRING}
之前的所有内容吗<代码>http://mysite/../带我去
http://mysite
。不显示禁止。@Go3Team是的,在上面的示例中,
%{REQUEST\u URI}
将是
/blah.php
@Go3Team另外,您可以将这两个条件替换为:
RewriteCond%{the\u REQUEST}\./
,这将涵盖URI和查询字符串