[英]Denying access to server.js in Express
我目前正在构建一个将在生产环境中使用的应用程序,为此我正在使用 Node & Express。
我关心的是我正在做的静态文件服务,因为服务器与命令node server.js
在同一目录 ( dist/
) 中运行。
显然有人可以做<url>/server.js
并且 Express 会很乐意返回文件的全部内容,这当然不利于安全。
我现在已经实现了一个基本检查,它应该拒绝访问这个文件,如下所示:
[...]
function denyServerJSAccess(req, res, next) {
if (req.originalUrl.indexOf('server.js') > -1) {
console.log("Denied access")
return res.sendStatus(403);
} else {
return next();
}
}
app.use(denyServerJSAccess);
app.use(express.static(__dirname + ""));
[...]
但这足够了吗?
目标攻击者能否制作一个绕过indexOf
的字符,但让我们快速提供文件? 如果是的话,那不会有任何好处。
过去我见过很多人们用来绕过基本保护的技巧,我有点担心,因为这可能是基本保护。
我应该怎么做才能保护这些文件?
提前致谢。
这里有两件事,第一行
app.use(express.static(__dirname + ""));
将公开目录server.js
中的所有内容(这可能是您的根目录)。 所以你想限制路径
app.use(express.static(__dirname + '/path/to/public/resources'));
其次,将公共资源仅放在path/to/public/resources
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.