如何解决如何处理路径遍历?
我正在尝试了解如何(以安全的方式)处理路径遍历。
例如,应用程序通过 JSON 格式的 REST API 从客户端接收文件名,在不可访问(由外部)目录中查找该文件并检索该文件的响应:
app.get('/',(req,res) => {
const fileName = req.body.fileName;
// some code...
fs.stat(`./nonAccessibleDir/${fileName}`,async function(err,stat) {
// some code...
});
// some code...
}
上述方法的问题在于,客户端可以在 fileName 请求中发送类似“../”的内容,并且它会毫无问题地“吃掉”它。请问如何处理这种情况,我应该如何以及如何修复此漏洞?
更新: 抱歉,我忘了提及我知道我应该检查收到的输入,但是如果我需要传递“/”和“.”怎么办?在输入中?另外,如果我不需要这个字符,我只需要检查删除路径遍历漏洞吗?
解决方法
一种简单的方法是通过检测任何 ../
段并返回错误(如果存在)的正则表达式来验证文件名。
if (fileName.match(/\.\.\//g) !== null) {
// return an api error
}
您可以有一个非常严格的验证规则,以防止 fileName 中出现任何正斜杠,从而只能直接指向所需目录中的文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。