You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js代码片段存在重大问题?求技术排查与解答

Node.js 服务器代码中的重大安全漏洞解析

先看你提供的代码片段:

const fs = require('fs');
const http = require('http');
 
const server = http.createServer((req, res) => {
  if (req.headers['x-secret'] != process.env.SECRET )
    res.writeHead(403).end('Secret incorrect');
 
  let body = [];
  req.on('data', chunk => {
    body.push(chunk);
  });
  req.on('end', () => {
    body = JSON.parse(Buffer.concat(body).toString());
    fs.writeFileSync(body.filename, body.file);
    res.writeHead(200).end('OK');
  });
});
 
server.listen(7654);

你已经排查出的几个问题确实存在,但课程提示的重大错误是路径遍历(Path Traversal)漏洞,这是致命的安全风险:

  • 代码直接使用请求体中的body.filename作为写入文件的路径,没有做任何路径校验和限制。攻击者可以构造恶意的filename值,比如../server.js、/etc/passwd(Linux系统)或者C:\Windows\System32\drivers\etc\hosts(Windows系统),从而覆盖服务器上的关键系统文件或应用代码,完全控制服务器。

另外补充你提到的几个问题的细节:

  • 链式调用res.writeHead(403).end()确实无效,且返回403后没有终止后续代码执行——即使返回了403响应,后面的请求体处理逻辑依然会运行,这也是一个隐藏问题,建议改成:res.writeHead(403); res.end('Secret incorrect'); return;
  • fs.writeFileSync会阻塞事件循环,高并发场景下会导致服务器响应缓慢,换成异步的fs.writeFile搭配async/await更合理
  • 缺乏容错机制:JSON.parse可能抛出解析错误、fs.writeFileSync可能因权限或路径问题报错,这些未捕获的异常会导致服务器崩溃

内容的提问来源于stack exchange,提问作者apprentice edu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 05:05:20