安全最佳实践:保护你的Web应用 安全最佳实践保护你的Web应用Web安全是开发过程中必须重视的问题。我在多个项目中总结了一些安全的最佳实践。为什么安全重要用户信任保护用户数据维护品牌声誉遵守法律法规业务保障防止数据泄露避免业务中断降低风险成本合规要求GDPRCCPA行业标准常见安全威胁XSS攻击// 危险直接插入用户输入 document.innerHTML userInput // 安全使用textContent document.textContent userInputCSRF攻击// 防止CSRF const csrfToken document.querySelector(meta[namecsrf-token]).content fetch(/api/action, { method: POST, headers: { X-CSRF-Token: csrfToken } })SQL注入// 危险字符串拼接 const query SELECT * FROM users WHERE email ${email} // 安全参数化查询 const query SELECT * FROM users WHERE email ? db.query(query, [email])输入验证服务端验证function validateEmail(email) { const regex /^[^\s][^\s]\.[^\s]$/ return regex.test(email) }使用验证库import * as yup from yup const schema yup.object().shape({ email: yup.string().email().required(), password: yup.string().min(8).required() })认证与授权密码安全// 使用bcrypt加密 const hash await bcrypt.hash(password, 10) const isMatch await bcrypt.compare(password, hash)JWT认证// 生成token const token jwt.sign({ userId: 1 }, process.env.JWT_SECRET, { expiresIn: 1h }) // 验证token const decoded jwt.verify(token, process.env.JWT_SECRET)HTTPS配置强制HTTPS// Express中间件 app.use((req, res, next) { if (!req.secure process.env.NODE_ENV production) { return res.redirect(https://${req.headers.host}${req.url}) } next() })HSTS头Strict-Transport-Security: max-age31536000; includeSubDomains安全头配置CSP头Content-Security-Policy: default-src self; script-src self unsafe-inlineX-Content-Type-OptionsX-Content-Type-Options: nosniffX-Frame-OptionsX-Frame-Options: DENY数据保护敏感数据加密const encrypted crypto.aesEncrypt(data, secretKey) const decrypted crypto.aesDecrypt(encrypted, secretKey)数据脱敏function maskEmail(email) { const [local, domain] email.split() return local[0] *** domain }安全监控日志记录app.use((err, req, res, next) { console.error(err.stack) res.status(500).send(Something broke!) })异常检测// 检测暴力破解 function checkRateLimit(ip) { const attempts getAttempts(ip) if (attempts 5) { throw new Error(Too many attempts) } }安全审计依赖检查npm audit代码审查检查敏感数据泄露验证输入处理审查权限控制总结Web安全是一个持续的过程。通过采取适当的安全措施可以显著降低安全风险保护用户和业务。技术有温度安全让技术服务更加可靠和可信。