私有文件暴露¶
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
像 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'));