我想知道是否有一个简单的方法,使Apache HTTPD拒绝(403)任何包含一个父path的URL ..
到目前为止,我已经尝试过(忽略了简单的积极因素)
<LocationMatch "\.\."> Order allow,deny Deny from all </LocationMatch>
但是这没有用。 目录中有Allow from all 。 我是在正确的轨道还是有一个更简单的方法来做到这一点(就像在90年代Fasttrack一样)。
我会通过使用ModSecurity来做到这一点:
SecRule REQUEST_URI "../" "log,deny,msg:'Directory Traversal Attack Detected'"
testing一些请求:
http://domain.com/../../../../etc/passwd
并检查审计日志,你会看到这样的事情:
[modsecurity] [client xxxx] [domain domain.com] [302] [/20120816/20120816-1529/20120816-152911-1np2Nn8AAAEAA Aq6EU0AAAAG] [file "/etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf"] [line "305"] [msg "Directory Traversal Attack Detected"] Access denied with code 403 (phase 2). Pattern match "../" at REQUEST_URI.