系统级安全加固
apt或yum)更新Linux内核、Node.js及系统软件包,修补已知安全漏洞。例如,执行sudo apt update && sudo apt upgrade(Ubuntu/Debian)或sudo yum update(CentOS/RHEL)。nodeapp)并加入对应组(如nodeapp),通过chown设置应用目录及日志文件的所有者为该用户,避免以root身份运行Node.js进程。例如:sudo groupadd nodeapp; sudo useradd -g nodeapp -s /bin/false nodeapp。ufw(Ubuntu)或firewalld(CentOS)仅开放Node.js应用必要端口(如HTTPS的443端口、应用端口3000),拒绝其他无关流量。例如,ufw allow 443/tcp && ufw enable或firewall-cmd --permanent --zone=public --add-port=3000/tcp && firewall-cmd --reload。sestatus,调整策略;或使用aa-status查看AppArmor状态,修改配置文件限制进程访问。应用级安全加固
express-validator、Joi等库过滤恶意内容(如SQL注入、XSS攻击),避免直接拼接用户输入到数据库查询或HTML中。https.createServer),或使用Helmet中间件设置安全HTTP头(如X-Frame-Options防点击劫持、X-XSS-Protection防XSS)。例如:const helmet = require('helmet'); app.use(helmet())。npm audit定期检查依赖库中的已知漏洞,npm outdated查看过时依赖,通过package.json固定依赖版本(如"express": "^4.18.2")并使用package-lock.json锁定不可变版本,避免意外升级引入漏洞。eval()、Function()等动态执行代码的方法,限制全局变量使用(如"use strict"),使用dotenv库管理环境变量,不将敏感信息(如API密钥、数据库密码)硬编码在代码中。权限与访问控制
750(所有者可读写执行,组可读执行,其他无权限),日志文件权限设为640(所有者可读写,组可读,其他无权限)。例如:sudo mkdir -p /var/log/my-node-app; sudo chown nodeapp:nodeapp /var/log/my-node-app; sudo chmod 750 /var/log/my-node-app。app.use((req, res, next) => { const allowedIPs = ['192.168.1.100', '10.0.0.1']; if (allowedIPs.includes(req.ip)) next(); else res.status(403).send('Forbidden'); })。监控与维护
/var/log/my-node-app),使用logrotate定期轮转日志(如每天轮转、保留14天、压缩旧日志),避免日志文件过大。例如,创建/etc/logrotate.d/my-node-app文件,内容为:/var/log/my-node-app/*.log { daily missingok rotate 14 compress delaycompress notifempty create 640 nodeapp nodeapp sharedscripts postrotate [ ! -f /var/run/my-node-app.pid ] || kill -USR1 \cat /var/run/my-node-app.pid` endscript }`。Snyk、npm audit等工具扫描依赖库漏洞,定期进行渗透测试(如使用OWASP ZAP),检查应用是否存在未修复的安全问题。