Node.js在Linux上的安全配置指南
sudo apt update && sudo apt upgrade(Ubuntu/Debian)或对应发行版的包管理命令,确保系统内核、Node.js及依赖库修补已知漏洞。curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash,加载配置后用nvm install --lts安装最新稳定版,用nvm use --lts切换版本。此方式可隔离用户级安装,避免root权限滥用。nodeuser),并通过chown -R nodeuser:nodeuser /path/to/app将应用目录归属该用户。使用PM2进程管理工具(sudo npm install -g pm2)启动应用时,通过pm2 start app.js --name "my-app"启动,再通过pm2 startup生成systemd服务脚本,确保应用以nodeuser身份运行,限制系统权限。ufw(Uncomplicated Firewall)仅开放必要端口(如SSH的22端口、HTTP的80端口、HTTPS的443端口),命令示例:sudo ufw allow 22/tcp && sudo ufw allow 80/tcp && sudo ufw allow 443/tcp && sudo ufw enable。若使用云服务器,还需配置安全组规则,限制源IP访问应用端口(如仅允许可信IP访问443端口)。sudo apt install certbot python3-certbot-nginx),配置Nginx反向代理时添加SSL证书路径(示例配置:ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;),并将HTTP请求重定向至HTTPS(return 301 https://$host$request_uri;)。若直接使用Node.js,可通过https模块加载证书:const https = require('https'); const options = { key: fs.readFileSync('key.pem'), cert: fs.readFileSync('cert.pem') }; https.createServer(options, app).listen(443);。npm outdated检查过时依赖,通过npm update更新到最新版本;运行npm audit扫描项目依赖中的已知漏洞,使用npm audit fix自动修复可修复漏洞。对于无法自动修复的漏洞,需手动评估并升级或替换依赖库。express-validator(npm install express-validator)验证用户输入(如body('username').isLength({ min: 3 }).trim().escape()),防止SQL注入、XSS攻击;避免使用eval()、new Function()等动态执行代码的方法。dotenv库(npm install dotenv)加载.env文件中的环境变量,将数据库密码、API密钥等敏感信息存储在环境变量中(如process.env.DB_PASSWORD),而非代码仓库。helmet库(npm install helmet)设置一系列HTTP头增强安全性,示例代码:app.use(helmet()); app.use(helmet.contentSecurityPolicy({ directives: { defaultSrc: ["'self'"], scriptSrc: ["'self'", "trusted.cdn.com"] } }));,可防范点击劫持、XSS、MIME类型嗅探等攻击。cors库(npm install cors)限制允许的源、方法和头部,示例配置:app.use(cors({ origin: 'https://yourdomain.com', methods: ['GET', 'POST'], allowedHeaders: ['Content-Type', 'Authorization'] }));,避免开放不必要的跨域权限。morgan库(npm install morgan)记录HTTP请求日志(app.use(morgan('combined'));),将日志输出到文件(如access.log)以便后续分析;集成监控工具(如New Relic、Datadog或Prometheus + Grafana),监控应用性能指标(如CPU、内存使用率、请求延迟)和异常事件(如频繁的5xx错误、非法访问尝试),及时响应安全事件。