繁体   English   中英

在 Express 中拒绝访问 server.js

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM