乐闻世界logo
搜索文章和话题

Cookie 的安全风险有哪些?如何防范 Cookie 相关的攻击?

3月6日 21:40

Cookie 容易受到多种安全攻击,了解这些攻击方式和防护措施对于构建安全的 Web 应用至关重要。

常见 Cookie 攻击方式

  1. XSS(跨站脚本攻击)窃取 Cookie
  • 攻击者通过注入恶意脚本读取 document.cookie
  • 防护:使用 HttpOnly 标志
javascript
// 不安全:可被 XSS 窃取 document.cookie = "token=abc123"; // 安全:HttpOnly 防止 JavaScript 访问 Set-Cookie: token=abc123; HttpOnly
  1. CSRF(跨站请求伪造)
  • 攻击者诱导用户发送跨站请求,浏览器自动携带 Cookie
  • 防护:使用 SameSite 属性、CSRF Token
javascript
// 防护示例 Set-Cookie: token=abc123; SameSite=Strict
  1. 中间人攻击
  • 在非加密连接中截获 Cookie
  • 防护:使用 Secure 标志,强制 HTTPS
javascript
Set-Cookie: token=abc123; Secure
  1. Cookie 注入
  • 攻击者伪造或篡改 Cookie 值
  • 防护:对 Cookie 值进行签名或加密

Cookie 安全最佳实践

  1. 设置安全标志
javascript
// 完整的安全 Cookie 示例 Set-Cookie: sessionId=xyz123; HttpOnly; Secure; SameSite=Strict; Path=/; Domain=.example.com; Max-Age=3600
  1. 敏感数据处理
  • 不在 Cookie 中存储明文密码
  • 使用加密或签名验证 Cookie 完整性
  • 定期轮换 Session ID
  1. 过期时间管理
  • 设置合理的过期时间
  • 敏感操作后立即失效 Cookie
  • 实现"记住我"功能时使用持久 Cookie
  1. 服务器端验证
  • 验证 Cookie 的来源和完整性
  • 检查 IP 和 User-Agent 变化
  • 实现速率限制防止暴力破解

代码示例:安全的 Cookie 设置

javascript
// Node.js Express 示例 res.cookie('token', encryptedToken, { httpOnly: true, secure: process.env.NODE_ENV === 'production', sameSite: 'strict', maxAge: 3600000, // 1小时 domain: '.example.com' });

GDPR 和隐私合规

  • 获取用户同意后才能设置 Cookie
  • 提供清晰的 Cookie 政策说明
  • 实现 Cookie 同意横幅
标签:Cookie