node.js - 禁止使用 Express Node 服务器访问文件

标签 node.js apache express

我有一个在 CentOS 上运行的 Node 服务器,目前,您可以转到根目录中的任何文件并查看它,例如 xxx.net/whatever.js。这显然不太好,因为我在某些文件中有一些敏感信息。

如何禁止用户从浏览器导航到这些文件?

我设置了一个 apache 代理来像这样查看该网站

<VirtualHost *:80>
  ServerAdmin me@xxx.net
  ServerName www.xxx.net
  ServerAlias xxx.net

  DocumentRoot /var/www/xxx.net
  <Directory /var/www/xxx.net>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

  ErrorLog /var/www/xxx.net/error.log
  CustomLog /var/www/xxx.net/requests.log combined

  ProxyRequests Off
  ProxyPreserveHost On
  ProxyVia Full
  <Proxy *>
   Require all granted
  </Proxy>

  <Location />
    ProxyPass http://127.0.0.1:4000/
    ProxyPassReverse http://127.0.0.1:4000/
  </Location>
</VirtualHost>

然后 pm2 运行 Express Node 服务器。我尝试了各种 chmod'ing 但没有任何改变。如果有人能阐明我的问题,那就太好了。如果您需要更多信息,请告诉我,谢谢!

最佳答案

您可以使用express js限制访问。

写下此文时

app.use('/', express.static(__dirname));

这意味着可以访问任何内容

您可以使用

限制对某些文件夹的访问
app.use('/', express.static(__dirname + '/public'));

或者你可以用express编写中间件,它可以包含你想要阻止的文件路由列表

    app.use(function (req, res, next) {
        if(!checkFunction(req.url)) {
            next();
        } else {
            res.send(404, "Not found");
        }
    })

    var checkFunction(url){
       var blockedUrl = ['folder/file1.js'];

       return blockedUrl.find(function(urlCheck){
            return urlCheck === url;
       })
    }

关于node.js - 禁止使用 Express Node 服务器访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42184295/

相关文章:

node.js - 如何在 TypeScript 中向现有 Node 类(例如 Buffer)添加自定义静态方法?

javascript - 关闭 CS :GO Dedicated Server via Node. js child_process

php - apache .htaccess 到 nginx 重写规则

php - 带有 mysql 数据库安装程序的 Web 应用程序

node.js - 设置 connect-flash 中间件以供 passport 使用

javascript - 从图表上应位于的位置计算值(最佳拟合线)

c++ - 如何使用 C++ lambda 函数创建 v8::FunctionTemplate?

mysql - 对每一行的 JSON 数据执行正则表达式,并使用 NiFi 插入 MySQL 表

node.js - 如何配置 i18next-express-middleware?

reactjs - 基于 Express 和 React 的应用程序的一般做法是什么?将服务器和客户端代码保存在相同或不同的项目/文件夹中?