安全岗位面试题更新 2026-08-05

请解释什么是网站中的跨站脚本攻击(XSS),并阐述相应的防御措施有哪些?

前端/移动开发安全意识技术原理

考察说明

考查对XSS攻击原理的掌握程度以及实际防护能力。

回答思路

  1. 【回答框架 1】XSS(跨站脚本攻击)是一种注入攻击,攻击者将恶意脚本注入到网页中,当其他用户浏览该页面时,恶意脚本在用户的浏览器中执行。主要危害包括窃取用户Cookie、会话劫持、钓鱼、篡改页面内容等。XSS通常发生在用户输入未经过滤或转义而直接输出到页面中的场景。
  2. 【回答框架 2】XSS主要分为三类:存储型、反射型和DOM型。存储型指恶意脚本被存储在服务器端(如数据库),当用户访问相关页面时被加载执行;反射型指恶意脚本通过URL参数等方式传递,服务器将未处理的输入直接返回;DOM型则是在客户端通过JavaScript修改DOM时,将恶意内容插入文档。
  3. 【回答框架 3】防御措施的核心原则是对所有不可信数据进行输出编码。具体包括:在HTML上下文对特殊字符进行HTML实体编码,在JavaScript上下文使用JavaScript编码,在URL上下文进行URL编码;对用户输入进行严格的验证,使用白名单机制过滤非法内容;使用Content Security Policy(CSP)限制脚本来源,禁止内联脚本和eval等不安全代码。
  4. 【回答框架 4】此外,设置HttpOnly Cookie属性可防止JavaScript访问Cookie,从而降低会话劫持风险。在开发框架层面,现代前端框架(如React、Vue)默认会进行转义,但也需要注意避免使用v-html、dangerouslySetInnerHTML等危险操作。对于富文本内容,应使用可靠的过滤库(如DOMPurify)进行清理。
  5. 【关键点 1】XSS是注入攻击,核心在于未经过滤的用户输入被当作代码执行。
  6. 【关键点 2】按存储、反射、DOM三种类型分别采取针对性防护。
  7. 【关键点 3】输出编码和输入验证是基础,CSP和HttpOnly是增强手段。
  8. 【关键点 4】避免使用危险的前端API(如innerHTML、document.write)。
  9. 【易错点 1】仅对输入进行过滤而忽略输出编码,导致绕过。
  10. 【易错点 2】认为前端框架自动处理所有XSS,忽视危险API的使用。
  11. 【易错点 3】CSP配置过于宽松,未禁止内联脚本或eval。