系统基础防护
/etc/sysctl.conf文件强化内核防护,例如启用地址空间布局随机化(kernel.randomize_va_space=2,防止内存攻击)、防御SYN Flood攻击(net.ipv4.tcp_syncookies=1,避免大量无效连接耗尽资源);定期执行sudo apt update && sudo apt upgrade更新系统包,修补已知漏洞。netstat -tuln),仅保留必要服务(如SSH 22、HTTP 80、HTTPS 443);禁用root用户默认远程登录(修改/etc/ssh/sshd_config中的PermitRootLogin no),限制超级管理员权限。依赖与版本管理
nvm(Node Version Manager)安装和管理Node.js版本(如curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash安装nvm,nvm install 18安装指定版本),避免权限问题和版本兼容性风险。npm audit检查依赖项中的安全漏洞(如npm audit fix自动修复可修复漏洞),npm outdated查看过时依赖,优先升级到最新稳定版;在package.json中锁定依赖版本(如使用package-lock.json),防止意外升级引入风险。网络安全配置
sudo certbot --nginx -d yourdomain.com),配置Web服务器(如Nginx)转发HTTPS请求至Node.js应用(监听443端口),确保客户端与服务器间通信加密。ufw(Uncomplicated Firewall)限制对Node.js应用的访问(如sudo ufw allow 22/tcp允许SSH、sudo ufw allow 443/tcp允许HTTPS,sudo ufw enable启用防火墙),仅允许可信IP地址访问关键端口。express-validator、DOMPurify等库严格验证用户输入(如检查邮箱格式、过滤HTML标签),防止SQL注入(如使用参数化查询)、XSS攻击(如转义输出内容)。权限与敏感信息管理
nodeuser)运行Node.js进程(sudo useradd -m nodeuser,sudo chown -R nodeuser:nodeuser /path/to/app),使用sudo -u nodeuser node app.js启动应用,减少潜在安全风险。dotenv库加载环境变量(如.env文件中存储DB_PASSWORD=yourpassword),避免在代码中硬编码敏感信息(如数据库密码、API密钥);设置文件权限(如chmod 600 .env),防止未授权访问。代码与依赖安全实践
eval()、setTimeout(string)等危险函数(防止代码注入),限制全局变量使用(如使用let/const代替var),使用Helmet中间件设置安全HTTP头(如Content-Security-Policy限制资源加载、X-Frame-Options防止点击劫持)。NodeJsScan、Snyk等工具扫描代码中的安全漏洞(如SQL注入、XSS),提前识别并修复潜在问题;定期审查代码(如每周一次代码评审),确保符合安全最佳实践。监控与应急响应
morgan中间件记录HTTP请求日志(如app.use(morgan('combined'))),配置logrotate工具轮转日志(如每天生成新日志文件,保留7天),避免日志文件过大;集成监控工具(如New Relic、Datadog),实时监控应用性能和安全事件(如异常请求、高CPU占用)。