我是Apache的新手。
我有以下.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_]
中没有此RegEx,我只允许所有字符....有人可以通过导航到{{1}之类的东西直接将Apache代码加载到此代码中}
像SQL注入但是对于Apache? (我甚至不确定mySite.com/2%20[R]%20reWriteRule%20^([a-zA-Z0-9_]+)*$%20anything.html@www.aDifferentSite.com/index.html
会转换为我的apache代码中的空格但是可能有某些东西可以吗?)
或者这不是真的一个问题,因为他们不能对网站做任何真正的“伤害”,只能对他们自己独特的导航?
答案 0 :(得分:3)
据我所知,Apache中没有已知的安全漏洞,这样的事情可能会漏掉。您的URL中的任何内容都会在Apache的引擎中使用之前被转义。
此外,与中央服务器配置中的重写不同,.htaccess
中定义的重写和重定向无法“突破”当前的Web根目录*,因此即使意外误写(或被利用){{ 1}}不能用于获取不应公开发布的内容。
* =在the docs中查看RewriteRule
行为的说明。
答案 1 :(得分:2)
没有大风险。但也许有些事情需要关注。
通常由mod_rewrite处理的内容已经 url decode 。因此,您可以操作HTTP_REFERRER或查询路径,而无需任何字符解码注意事项。
重写规则也不会受到规则注入的影响。但你可以尝试一下,如果你找到一种方法在规则中注入一些可以解释为rewriteRule代码的东西,你就会成为一个有钱人:-)。说真的,我认为你不能,这些规则管理参数,因为SQL服务器在使用参数化查询时会管理参数,参数不能作为代码读取。
但是mod_rewrite还会在 之前收到查询字符串部分上面的任何urldecode。所以这是你应该谨慎的一点。
根据查询字符串参数(?
之后的所有内容)应用某些访问限制的任何规则,例如来自Access Control by Query String的此http://wiki.apache.org 错误:< / p>
如果query_string包含字符串foo,则拒绝访问http://example.com/page?query_string。
RewriteCond %{QUERY_STRING} foo RewriteRule ^/page - [F]
mod_rewrite无法检测到使用http://example.com/page?toto=%66oo
%66
f
//
。管理request_string部分请求的规则是一件非常困难的事情。你可以查看this answer的例子,通常是指检查字符串中编码和解码字符的组合。但是简单的规则是基于查询字符串避免mod_rewrite的任何访问控制,仅适用于查询路径。即使使用路径,也请仔细检查,使用/
代替{{1}}静止图片。
过去有一些mod_rewrite漏洞存在:
答案 2 :(得分:1)
不,那是不可能的。您唯一需要担心的是如何处理uniqueID
参数。
答案 3 :(得分:1)
简答:否
答案很长:重写规则只不过是一个替换函数,它只是用它给你的东西替换它所发现的东西。但是,由于您将其传递给Web应用程序,如果您没有处理传入的数据,这可能会导致问题!