XSS 跨站脚本攻击
-
原理:通过注入恶意脚本到网页中,窃取用户数据或劫持会话。
-
存储型:恶意脚本存入数据库(如用户评论)
-
反射型:脚本通过URL参数注入(如钓鱼连接)
-
DOM型:客户端直接修改DOM触发攻击
-
前端防御:
- 输入转义
- 使用textContent 代替 innderHTML,避免直接渲染HTML
- 使用转移第三方库处理用户输入
- 内容安全策略(CSP)
- 在HTTP头设置Content-Security-Policy,限制脚本来源
Content-Security-Policy: script-src 'self' https://trusted.cdn.com; - HttpOnly Cookie
- 避免通过document.cookie暴露Cookie(需要后端配合)
- 输入转义
CSRF(XSRF) 跨站请求伪造
- 原理:诱导用户访问恶意页面,伪造已认证的请求(如账号操作)
- 前端防御:
- CSRF Token
- 后端生成Token嵌入表单/请求头,前端提交时携带
- SameSite Cookie属性
- 设置Cookie的SameSite属性微Strict 或 Lax
Set-Cookie: sessionId=abc123; SameSite=Lax
- CSRF Token
SQL注入
- 原理:通过输入恶意SQL语句篡改数据库查询
DDos攻击
- 原理:通过海量请求耗尽服务器资源
- 前端防御:
- 请求限流:
- 限制请求频率(如按钮防重复点击)
- CDN和缓存优化
- 使用CDN分发静态资源,减少服务器压力
- 请求限流:
最佳实践:
- 代码扫描:
- 使用ESLint插件(如eslint-plugin-security)检测危险模式
- 安全测试:
- 定期进行滲透测试,使用工具(如OWASP ZAP)
- 错误处理:
- 避免暴露堆栈信息(如NODE_ENV=production 隐藏细节)