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=%66oof
的%66
将不会被mod_rewrite检测到。管理请求中查询字符串部分的规则是一件非常困难的事情。您可以检查示例,通常意味着检查字符串中编码字符和解码字符的组合。但是简单的规则是避免任何基于查询字符串的mod_rewrite访问控制,只在查询路径上工作。即使使用路径,也要仔细检查是否使用/
而不是/
静态效果
过去存在一些mod_重写漏洞:
- (2003,缓冲区溢出)
- (2006年,缓冲区溢出)
- (2013年,错误日志转义)
谢谢:)我也是这么想的!我主要关心的不是真正的安全漏洞,更重要的是一般的漏洞。。。我还是Apache新手,但是否可以在Apache中创建for循环或其他东西,从服务器加载大量页面(最终导致服务器崩溃)。。。如果是这样的话,有人可以通过注射来做到这一点吗