为了测试路径遍历攻击防护,我准备了SecredFile.png文件。因为不在public目录,所以正常情况下无法访问。
x1c 0d1x的数据
现在尝试通过REST客户端访问此文件(Chrome删除了../
):
的
如果要检查request
(HTTP.IncomingMessage类型)的url
属性,它将是/SecretFile.png
。是否是路径遍历攻击保护或否,URI已被更改,这至少是令人困惑的,因此可能是bug的原因。这样的行为好吗?
如果我们将URL变得更复杂,如http://127.0.0.1/test/../../SecretFile.png
,结果也是一样的-request.url
将是/SecretFile.png
我应该做什么开发后端框架?
相关的子问题是,如果http://127.0.0.1/../SecretFile.png
或http://127.0.0.1/test/../../SecretFile.png
的路径遍历攻击是不可能的,那么作为框架开发者,我必须提供哪些路径遍历攻击防护措施?
1条答案
按热度按时间w51jfk4q1#
浏览器和其他HTTP客户端在将路径发送到服务器之前解释路径 * 中的
..
和.
组件,因此当它到达那里时,它不再是一个问题。然而,编写这样的代码是微不足道的。打开一个终端,运行
telnet 127.0.0.1 80
并输入:字符串
(end用空行来完成请求)
有些漏洞(如本例中的路径遍历)只能通过做一些好的HTTP客户端不会做的事情来利用。