Javascript 拒绝访问Express中的server.js

Javascript 拒绝访问Express中的server.js,javascript,security,express,Javascript,Security,Express,我目前正在构建一个应用程序,该应用程序将在生产环境中使用,我正在为此使用Node&Express 我关心的是我正在执行的静态文件服务,因为服务器使用命令node server.js在同一目录(dist/)中运行 显然,有人只需执行/server.js,Express就会很高兴地返回文件的全部内容,当然这对安全性不好 我现在已经实现了一个基本检查,它应该拒绝访问此文件,如下所示: [...] function denyServerJSAccess(req, res, next) {

我目前正在构建一个应用程序,该应用程序将在生产环境中使用,我正在为此使用Node&Express

我关心的是我正在执行的静态文件服务,因为服务器使用命令
node server.js
在同一目录(
dist/
)中运行

显然,有人只需执行
/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(uu dirname+)

将公开目录
server.js
中的所有内容(这可能是您的根目录)。因此,您希望将路径限制为

app.use(express.static(uu dirname+'/path/to/public/resources')


其次,只将公共资源放在
path/to/public/resources

下。不要将它们放在同一个目录中,请使用名为
public
的目录或类似于server.js所在目录中的任何目录,并且仅从那里开始使用服务器。可能有更多的文件你不希望任何人通过server.js访问该目录。我不知道我怎么会没有想到这一点。这看起来更干净,也更容易。非常感谢。