浅析XSS原理与分类——含payload合集和检测与防护思路
一、原理与分类XSS的根源在于不可信数据被未经过滤地注入了HTML/JS上下文。1. 反射型 XSS特点非持久化恶意脚本通过URL参数、表单提交等方式发送给服务器服务器将脚本“反射”回响应页面中。触发需要诱导用户点击恶意链接通常结合钓鱼或短链接。示例// 危险代码echo 欢迎: . $_GET[name];若namescriptalert(1)/script则脚本直接执行。2. 存储型 XSS特点持久化恶意脚本被存储在后端数据库、文件系统等当其他用户访问正常页面时脚本被加载执行。危害影响范围广常见于评论区、个人信息、帖子等场景。示例攻击者在留言板提交scriptstealCookie()/script所有浏览留言的用户都会中招。3. DOM型 XSS特点完全在前端发生不经过服务器后端逻辑。通过修改页面DOM环境如location.hash、document.referrer、innerHTML等注入恶意脚本。区别服务器响应与正常页面无异恶意代码在客户端本地执行。示例// 危险代码var hash location.hash.slice(1);document.getElementById(output).innerHTML hash;访问page.html#img srcx onerroralert(1)即可触发。回到顶部二、绕过姿势进阶技巧防御机制如输入过滤、输出编码、CSP不断演进攻击者也总结出大量绕过手法。以下列举经典及现代绕过思路1. 上下文感知绕过HTML标签内当输出点在标签属性如input value...时可提前闭合引号并注入新事件 οnmοuseοveralert(1)JavaScript代码中如果输出在script标签内需考虑闭合字符串或利用模板字符串var name 用户输入; // 若输入 ;alert(1);// 则逃逸2. 编码绕过HTML实体编码某些过滤仅检查和但浏览器在解析HTML属性时会先解码实体Unicode/URL编码在javascript:伪协议或data:中使用。多重编码针对递归解码的过滤器使用两次URL编码。3. 事件与伪协议滥用HTML5新事件onload、onerror、onfocus、onpointermove等。