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