Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 被操纵的URL会在重写规则中导致安全问题吗?_Apache_.htaccess_Security_Mod Rewrite - Fatal编程技术网

Apache 被操纵的URL会在重写规则中导致安全问题吗?

Apache 被操纵的URL会在重写规则中导致安全问题吗?,apache,.htaccess,security,mod-rewrite,Apache,.htaccess,Security,Mod Rewrite,我是阿帕奇的新手 我有以下.htaccess文件 Options -Indexes RewriteBase / RewriteEngine on RewriteRule ^([a-zA-Z0-9_]+)*$ redirect.php?uniqueID=$1 [QSA,L] 所以这就转到:mySite.com/242skl2j 加载页面:mySite.com/redirect.php?uniqueID=242skl2j 但假设我的Apache代码中没有这个正则表达式,[a-zA-Z0-9.,我只

我是阿帕奇的新手

我有以下
.htaccess
文件

Options -Indexes
RewriteBase /
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_]+)*$ redirect.php?uniqueID=$1 [QSA,L]
所以这就转到:
mySite.com/242skl2j

加载页面:
mySite.com/redirect.php?uniqueID=242skl2j

但假设我的Apache代码中没有这个正则表达式,
[a-zA-Z0-9.
,我只允许使用所有字符。。。。有人可以导航到类似于
mySite.com/2%20[R]%20重写规则%20^([a-zA-Z0-9_]+)*$%20的东西,直接将Apache代码加载到此文件中吗。html@www.aDifferentSite.com/index.html

像SQL注入,但对于Apache?(我甚至不确定
%20
是否会在我的apache代码中转换为空格,但可能有什么可以转换的?)


或者这不是一个真正的问题,因为他们不会对网站造成任何真正的“伤害”,只会对他们自己独特的导航造成伤害?

不,这是不可能的。唯一需要担心的是如何处理uniqueID参数。

简短回答:否


详细回答:重写规则只不过是一个替换函数,它只是用您提供给它的内容替换它找到的内容。但由于您要将其传递给web应用程序,如果您没有处理传入的数据,则可能会导致问题

据我所知,Apache中没有已知的安全漏洞,类似的东西可能会漏掉。URL中的任何内容在Apache引擎中使用之前都会被转义

此外,与中央服务器配置中的重写和重定向不同,在
.htaccess
中定义的重写和重定向无法“突破”当前的web根*,因此即使意外误写(或被利用)
重写规则
也不能用于获取不应该公开提供的内容


*=请参阅中对重写规则行为的描述。

没有大的风险。但也许有些事情需要关心

通常,mod_rewrite处理的事情已经被url解码了。因此,您可以在不考虑任何字符解码的情况下操作HTTP_referer或查询路径

另外,重写规则不会受到规则注入的影响。但您可以尝试一下,如果您找到一种方法在规则中注入一些东西,这些东西将被解释为重写规则代码,那么您将成为一个有钱人:-)。说真的,我不认为您可以,这些规则管理参数就像SQL server在使用参数化查询时管理参数一样,参数不能作为代码读取

但是mod_rewrite在对其进行任何urldecode之前还接收查询的查询字符串部分。所以这一点你应该谨慎

任何基于查询字符串参数(在
之后的所有内容)应用某些访问限制的规则,如来自的,都是错误的

如果查询_字符串包含字符串foo,则拒绝访问

RewriteCond %{QUERY_STRING} foo RewriteRule ^/page - [F] 重写cond%{QUERY_STRING}foo 重写规则^/第页-[F] 使用
http://example.com/page?toto=%66oo
f
%66
将不会被mod_rewrite检测到。管理请求中查询字符串部分的规则是一件非常困难的事情。您可以检查示例,通常意味着检查字符串中编码字符和解码字符的组合。但是简单的规则是避免任何基于查询字符串的mod_rewrite访问控制,只在查询路径上工作。即使使用路径,也要仔细检查是否使用
/
而不是
/
静态效果

过去存在一些mod_重写漏洞:

  • (2003,缓冲区溢出)
  • (2006年,缓冲区溢出)
  • (2013年,错误日志转义)

谢谢:)我也是这么想的!我主要关心的不是真正的安全漏洞,更重要的是一般的漏洞。。。我还是Apache新手,但是否可以在Apache中创建for循环或其他东西,从服务器加载大量页面(最终导致服务器崩溃)。。。如果是这样的话,有人可以通过注射来做到这一点吗