系统级安全加固
apt/yum)更新系统软件包,通过npm audit修复依赖漏洞;优先使用NodeSource仓库或nvm(Node Version Manager)安装指定版本的Node.js,避免使用过时版本。root用户运行Node.js应用,创建专用用户(如nodeapp)和组,通过chown设置应用目录及日志文件的所有权(如/var/log/my-node-app归nodeapp用户),并通过--uid/--gid参数(如pm2 start app.js --uid nodeapp)让进程以专用用户身份运行。firewalld(CentOS/RHEL)或ufw(Ubuntu/Debian)限制访问,仅开放Node.js应用必需端口(如HTTP 80、HTTPS 443或自定义业务端口)。例如,firewall-cmd --permanent --zone=public --add-port=3000/tcp添加端口,firewall-cmd --reload生效;若使用iptables,添加-A INPUT -p tcp --dport 3000 -j ACCEPT规则并保存。setenforce 1)或AppArmor,限制应用对系统资源的访问。例如,SELinux可通过semanage fcontext调整上下文(如httpd_log_t),restorecon恢复目录上下文;AppArmor通过配置文件(如/etc/apparmor.d/nodeapp)定义进程权限。应用级安全配置
express-validator、DOMPurify等库防止SQL注入、XSS攻击;避免使用eval()、new Function()等高危函数。certbot自动化配置),禁用HTTP;通过helmet中间件设置安全HTTP头(如X-Frame-Options: DENY防点击劫持、X-XSS-Protection: 1; mode=block防XSS、Content-Security-Policy: default-src 'self'限资源加载)。dotenv库将敏感信息(如数据库密码、API密钥)存储在.env文件中,避免硬编码在代码库;确保.env文件不被提交到版本控制系统(如Git,通过.gitignore排除)。npm audit检查依赖项中的已知漏洞,使用npm outdated更新过时依赖;集成Snyk、Trivy等工具监控依赖安全,及时修复高风险漏洞。日志与监控
/var/log/my-node-app),设置目录权限为750(drwxr-x---),日志文件权限为640(-rw-r-----);使用logrotate配置日志轮转(如每日轮转、保留14天、压缩旧日志),避免日志文件过大。pm2的监控功能(pm2 monit)跟踪应用性能;集成Prometheus+Grafana监控系统指标(如CPU、内存、请求量);通过auditd记录系统日志,监控可疑活动(如频繁的登录失败尝试)。其他安全措施
express-rate-limit中间件限制同一IP的请求频率(如每分钟60次),防止DoS攻击或暴力破解。res.send(userInput)),使用Joi等库验证输入格式;定期进行代码审查,识别潜在的安全漏洞(如未过滤的用户输入)。