我试图了解如何(以安全的方式)处理路径遍历。
例如,应用程序通过 REST API 以 JSON 格式从客户端接收文件名,在不可访问(外部)目录中查找它并使用该文件检索响应:
app.get('/', (req, res) => {
const fileName = req.body.fileName;
// some code...
fs.stat(`./nonAccessibleDir/${fileName}`, async function(err, stat) {
// some code...
});
// some code...
}
上述方法的问题是客户端可以在文件名请求中发送类似“../”的内容,并且它会毫无问题地“吃掉”它。如何处理这种情况,请问我应该如何修复这个漏洞?
更新:对不起,但我忘了提到我知道我应该检查收到的输入,但是如果我需要传递“/”和“。”怎么办?在输入?另外,如果我不需要这些字符,是否只需要检查以删除路径遍历漏洞?