目前,我的网站将尝试使用以这种方式构建的URI向后浏览文件夹来查找目录:
http://dummy.domain.com/home/../../section/
我想使用mod_rewrite
阻止此操作,但我无法编写正则表达式,该表达式将能够从URI中删除所有../
。最好的尝试是:
RewriteRule ^(.*)([\.]{2}[\/]{1})(.*)$ $1$3 [L]
但上述规则只会移除一次../
答案 0 :(得分:1)
匹配网址格式的正则表达式似乎是错误的。
在根目录中尝试此规则.htaccess:
RewriteRule ^(.*?)(?:\.{2}/)+(.*)$ $1$2 [L,R,NE]
RewriteRule ^((?!home)[^/]+)/?$ /home/area/$1 [L,NC]
此\.{2}/
模式符合../
,R
标记将确保重定向网址。
答案 1 :(得分:0)
我最终成功阻止了使用Apache mod_security进行目录遍历以及mod_security.conf中的这条规则
SecRule REQUEST_URI_RAW" \。{1,2} \ /?" "登录,拒绝,消息:'指南 检测到遍历攻击 - %{MATCHED_VAR_NAME}:%{MATCHED_VAR}',ID:123"