CodeQL 文档

私有文件暴露

ID: js/exposure-of-private-files
Kind: problem
Security severity: 6.5
Severity: warning
Precision: high
Tags:
   - security
   - external/cwe/cwe-200
   - external/cwe/cwe-219
   - external/cwe/cwe-548
Query suites:
   - javascript-code-scanning.qls
   - javascript-security-extended.qls
   - javascript-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

express 这样的库提供了从 Web 服务器提供静态文件目录的简便方法。但是,使用这些方法有时会导致意外的信息暴露。例如,如果提供 node_modules 文件夹,那么攻击者可以访问 package.json 文件中的 _where 字段,这将提供对该文件绝对路径的访问权限。

建议

限制从 Web 服务器提供的静态文件文件夹。

示例

在下面的示例中,来自 node_modules 的所有文件都将被提供。这使客户端可以轻松地访问该文件夹中的所有文件,包括 package.json 文件中可能存在的私有信息。

var express = require('express');

var app = express();

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

通过仅提供 node_modules 文件夹中的特定文件夹,下面的问题已得到修复。

var express = require('express');

var app = express();

app.use("jquery", express.static('./node_modules/jquery/dist'));
app.use("bootstrap", express.static('./node_modules/bootstrap/dist'));

参考资料

  • ©GitHub, Inc.
  • 条款
  • 隐私