Node.js的`HTTP.IncomingMessage`有路径遍历攻击防护吗?

问题描述 投票:0回答:1

为了测试路径遍历攻击防护,我准备了SecredFile.png文件。因为不在public目录下,所以正常情况下无法访问。

现在尝试通过 REST 客户端访问此文件(Chrome 删除了

../
):

如果检查

url
HTTP.IncomingMessage
类型)的request属性,它将是
/SecretFile.png
。是否存在路径遍历攻击保护,URI 已更改,这至少令人困惑,因此可能是错误的原因。 这样的行为好吗?

如果我们将 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
的路径遍历攻击是不可能的,作为框架开发者我必须提供哪些路径遍历攻击防护措施?

node.js http httprequest
1个回答
1
投票

浏览器和其他 HTTP 客户端在将路径发送到服务器之前

会解释路径中的 
..
. 组件,因此当路径到达服务器时,这不再是问题。

然而,写一些能做到这一点的东西是微不足道的。只需打开一个终端,运行

telnet 127.0.0.1 80

 并输入:

GET /../SecretFile.jpg HTTP/1.0 Host: 127.0.0.0
(以空行结束以完成请求)

某些漏洞(例如本例中的路径遍历)只能通过做 HTTP 客户端不会做的事情来利用。

© www.soinside.com 2019 - 2024. All rights reserved.