侧边栏壁纸
博主头像
colo

欲买桂花同载酒

  • 累计撰写 1823 篇文章
  • 累计收到 0 条评论

解释跨站脚本攻击(XSS)及其防御方法

2025-12-11 / 0 评论 / 8 阅读

题目

解释跨站脚本攻击(XSS)及其防御方法

信息

  • 类型:问答
  • 难度:⭐

考点

XSS攻击原理,输入输出处理,防御措施

快速回答

跨站脚本攻击(XSS)是攻击者向网页注入恶意脚本的攻击方式。防御核心方法:

  • 对用户输入进行严格过滤和转义
  • 使用内容安全策略(CSP)
  • 避免直接使用 innerHTML 等危险API
  • 设置 HttpOnly 标志保护Cookie
## 解析

1. XSS攻击原理

XSS(Cross-Site Scripting)指攻击者在网页中注入恶意脚本,当其他用户访问时脚本执行,从而窃取Cookie、会话令牌或篡改页面内容。主要分为三类:

  • 存储型XSS:恶意脚本永久存储在服务器(如评论区)
  • 反射型XSS:恶意脚本通过URL参数传递并即时返回
  • DOM型XSS:前端JavaScript直接操作DOM时触发

2. 防御措施与代码示例

(1) 输入过滤与输出转义

原则:对所有不可信数据(用户输入、URL参数等)在输出到HTML前进行转义

// JavaScript 示例:使用textContent代替innerHTML
const userInput = "<script>alert('xss')</script>";
document.getElementById('output').textContent = userInput; // 安全

// 服务端转义示例(Node.js)
const escaped = userInput
  .replace(/&/g, '&')
  .replace(/</g, '<')
  .replace(/>/g, '>')
  .replace(/"/g, '"');

(2) 内容安全策略(CSP)

通过HTTP头限制脚本来源:

Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com;

(3) HttpOnly Cookie

防止JavaScript访问敏感Cookie:

Set-Cookie: sessionId=abc123; HttpOnly; Secure

3. 最佳实践

  • 使用安全框架(如React的JSX自动转义、Vue的v-text)
  • 避免拼接HTML:使用 createElement 或模板引擎
  • 对富文本使用白名单过滤(如DOMPurify库)

4. 常见错误

  • 仅在客户端转义(需同时服务端转义)
  • 使用 innerHTML = userContent 直接插入内容
  • 忽略URL参数、HTTP头等非表单输入源

5. 扩展知识

  • XSS与CSRF区别:XSS利用用户对站点的信任,CSRF利用站点对用户的信任
  • 现代浏览器防护:Chrome内置XSS Auditor(已弃用),现主要依赖CSP
  • 测试工具:使用OWASP ZAP或Burp Suite进行漏洞扫描