gpt4 book ai didi

node.js - 是否可以通过 request.url 进行目录遍历?

转载 作者:搜寻专家 更新时间:2023-11-01 00:33:29 25 4
gpt4 key购买 nike

我来自 PHP,您可以在 URL 中插入双点以尝试目录遍历。在 NodeJS 中,您似乎得到 Http 网络服务器会自动从 URL 中删除双点。

例如,如果您转到 http://example.com/static/../app.js,Node 似乎重定向到 http://example.com/app.js,然后在我的例子中抛出 404,因为不以 /static/ 开头的 URL 没有回调。

是否可以安全地假设通过 request.url 的目录遍历在使用 http 创建的 NodeJS HTTP 网络服务器中是可能的> 包?

最佳答案

我要说的是你可以确定这是不可能的,然后我试过了,我不得不说不,http 模块似乎没有删除'/../'。您看到的重定向是在浏览器中完成的。因此,它是否存在安全风险取决于您的静态处理程序是如何实现的。

概念验证:

// Server
var http = require('http');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(req.url);
}).listen(1337);

curl 它:

curl  --path-as-is "http://localhost:1337/static/../app.js"
# /static/../app.js

因此,如果您使用仅使用 path.resolve() 的自制静态处理程序,您就完蛋了。希望像 express.static 这样流行的人已经考虑过这个,但我还没有尝试过。

更新

Express 确实以 404“错误:禁止访问”作为响应。

关于node.js - 是否可以通过 request.url 进行目录遍历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16985658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com