3

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

我一直在尝试这个,直到我意识到需要逃脱的时期:

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

然后我将其更改为:

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

但它仍然禁止查询字符串中的任何 / 。

另外,如果我有规则,{REQUEST_URI}那会是{QUERY_STRING}多余的吗?

谢谢。

编辑:

我已经成功地通过以下方式使它起作用:

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

但是,RewriteCond %{REQUEST_URI} \.\./还是RewriteCond %{REQUEST_URI} (\.\./)没有。我也试过/\.\./&(/\.\./)

4

1 回答 1

0

是之后的%{QUERY_STRING}一切吗?,因此您的规则成功阻止了 htis 之类的 URL:

http://domain.com/blah.php?../../../path

但不会检查您的 URI。您可以通过修改规则来检查两者:

RewriteCond %{QUERY_STRING} \.\./ [OR]
RewriteCond %{REQUEST_URI} \.\./ 
RewriteRule .* - [F]
于 2012-08-25T15:10:56.510 回答