跨站脚本攻击(XSS)
字数 880 2025-11-22 00:49:20

跨站脚本攻击(XSS)

  1. 基础概念
    跨站脚本攻击(XSS)是一种安全漏洞,攻击者通过向网页注入恶意脚本,当其他用户访问该页面时脚本会执行。其核心危害是绕过同源策略,使攻击者能窃取用户会话凭证、篡改页面内容或发起未授权操作。

  2. 攻击原理与分类

    • 反射型XSS:恶意脚本作为请求参数嵌入URL,服务器未过滤直接返回给浏览器执行。例如:
      http://example.com/search?q=<script>alert('XSS')</script>
      用户点击此类链接时,脚本在受害者浏览器中触发。
    • 存储型XSS:恶意脚本被永久存储到服务器(如评论区、数据库),其他用户加载页面时自动执行,危害范围更广。
    • DOM型XSS:前端JavaScript动态修改DOM时未转义数据,导致脚本执行。例如:
      document.innerHTML = userInput; // userInput含恶意代码
  3. 攻击技术细节

    • 脚本注入点包括:HTML元素内容(<div>${input}</div>)、属性(<img src="x" onerror="恶意代码">)、URL参数等。
    • 攻击载荷可能通过<script>标签、事件处理器(如onmouseover)、或利用eval()函数执行。
    • 高级攻击会规避过滤,例如使用Unicode编码、拆分字符串(<scr + ipt>)或利用SVG等新标签。
  4. 防御机制

    • 输入验证与输出转义:对用户输入进行严格校验(如白名单过滤),并在输出到HTML前转义特殊字符(例如<转为&lt;)。
    • 内容安全策略(CSP):通过HTTP头定义可信来源,禁止内联脚本和未授权域名加载资源。
    • HttpOnly Cookie:标记敏感Cookie为HttpOnly,阻止JavaScript访问,降低会话劫持风险。
  5. 现实案例与影响

    • 2005年MySpace的Samy蠕虫:通过XSS在24小时内感染百万用户,自动添加好友并传播。
    • 攻击可导致钓鱼欺诈、数据泄露、恶意软件分发,甚至结合CSRF实施更复杂的攻击链。
跨站脚本攻击(XSS) 基础概念 跨站脚本攻击(XSS)是一种安全漏洞,攻击者通过向网页注入恶意脚本,当其他用户访问该页面时脚本会执行。其核心危害是绕过同源策略,使攻击者能窃取用户会话凭证、篡改页面内容或发起未授权操作。 攻击原理与分类 反射型XSS :恶意脚本作为请求参数嵌入URL,服务器未过滤直接返回给浏览器执行。例如: http://example.com/search?q=<script>alert('XSS')</script> 用户点击此类链接时,脚本在受害者浏览器中触发。 存储型XSS :恶意脚本被永久存储到服务器(如评论区、数据库),其他用户加载页面时自动执行,危害范围更广。 DOM型XSS :前端JavaScript动态修改DOM时未转义数据,导致脚本执行。例如: document.innerHTML = userInput; // userInput含恶意代码 攻击技术细节 脚本注入点包括:HTML元素内容( <div>${input}</div> )、属性( <img src="x" onerror="恶意代码"> )、URL参数等。 攻击载荷可能通过 <script> 标签、事件处理器(如 onmouseover )、或利用 eval() 函数执行。 高级攻击会规避过滤,例如使用Unicode编码、拆分字符串( <scr + ipt> )或利用SVG等新标签。 防御机制 输入验证与输出转义 :对用户输入进行严格校验(如白名单过滤),并在输出到HTML前转义特殊字符(例如 < 转为 &lt; )。 内容安全策略(CSP) :通过HTTP头定义可信来源,禁止内联脚本和未授权域名加载资源。 HttpOnly Cookie :标记敏感Cookie为HttpOnly,阻止JavaScript访问,降低会话劫持风险。 现实案例与影响 2005年MySpace的Samy蠕虫:通过XSS在24小时内感染百万用户,自动添加好友并传播。 攻击可导致钓鱼欺诈、数据泄露、恶意软件分发,甚至结合CSRF实施更复杂的攻击链。