.htaccess 转义句点

标签 .htaccess mod-rewrite

我最近遇到了一次 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} (\.\./) 不会。我也尝试过 /\.\./ & (/\.\./)

最佳答案

%{QUERY_STRING}? 之后的所有内容,因此您的规则成功阻止了像 htis 这样的 URL:

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

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

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

关于.htaccess 转义句点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12122972/

相关文章:

apache - 如何将 SCRIPT_URI 写入 Apache 的 header ?

.htaccess - magento 和管理页面中的 500 内部服务器错误

php - 使用MySQL创建.htaccess文件URL重写参数

.htaccess维护多个IP

.htaccess - 需要一种通用的方法来创建 SEO 友好的 URL

apache - 根据 .htaccess 中的域/子域更改 DirectoryIndex

css - apache 重写特定的 htaccess 重定向

.htaccess - 使用 htaccess 为所有嵌入式链接强制使用 ssl 来解决不安全的内容

apache - .htaccess 将查询字符串重写为路径

php - 跳过某些特定文件的 .htaccess 规则