发出请求时,XSS代码出如今URL中,做为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一块儿传回给浏览器,最后浏览器解析执行XSS代码。这个过程想一次反射,故叫反射型XSS。html
// 适用范围:后端接口会根据url后面拼接传参的参数原样返回的 // 浏览器植入XSS脚本 localhost:3000/?xss=<img%20src="null"%20onerror="alert(1)"/> // 植入文字 localhost:3000/?xss=<p%20onclick="alert(%27点我%27)">点我</p> // 嵌套网站 localhost:3000/?xss=<iframe%20src="//baidu.com/t.html"></iframe>
存储型XSS和反射型XSS的差异仅在于,提交的代码会存储服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。数据库
移除用户上传的DOM属性,如onerror等,移除用户,上传的Style节点、Script节点、Iframe节点等后端
避免直接对HTML Entity解码
使用DOM parse转换,校订不配对的DOM标签浏览器