当前位置: 首页 > Web前端 > HTML5

xss攻击执行原理分析

时间:2023-04-05 20:13:02 HTML5

什么是XSS?xss的全称是Cross-sitescripting(跨站脚本),不要和CascadingStyleSheets(CSS)的缩写混淆,所以跨站脚本攻击简称为XSS。是网站应用的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入网页,其他用户在查看网页时会受到影响。此类攻击通常涉及HTML以及客户端脚本语言。XSS带来的危害包括:窃取用户cookies、窃取个人信息;劫持会话,操纵用户网络数据;发动ddos攻击;篡改页面,弹出广告等类型1,非持久型1.1反射型用户将带有xss攻击的代码作为用户输入发送给服务器,服务器不处理用户输入,直接返回给前端。1.2DOM-basedDOM-basedxss是浏览器解析机制造成的漏洞,服务端不参与。因为不需要服务端传输数据,xss代码会从url注入页面,浏览器会使用浏览器解析脚本,一些标签的属性和方法来触发xss。2.持久化用户输入的包含xss代码的内容被保存在数据库或存储文件中。xss执行原理xss代码执行的根本原因是在数据渲染到页面的过程中,html解析触发了xss脚本的执行。脚本注入有两种:1.脚本脚本直接注入。2.通过某些标签的属性和事件。比如:xss等直接injectscript脚本:我们可能经常使用jquery通过html()方法来操作页面。这时候就会触发xss,因为jquery的html()方法的初衷就是让js脚本执行。原因是:jquery在解析脚本的时候,会通过createElement('script')创建一个script节点,此时浏览器会执行脚本;同样的原生jsapi,innerHTML也会将包含脚本脚本的字符串作为标签解析给浏览器,只是因为浏览器加载js的原则:页面加载时只会执行一次。所以无法通过innerHTML触发xss。Text()、innerText等方法将包含xss的字符串视为文本节点,因此无法解析成html节点,也就不会触发xss。通过属性和事件:因为img标签没有关闭,会触发onerror事件,导致xss脚本执行.通过属性和事件触发依赖于在页面中注入html标签,在这个过程中会被chrome浏览器的XSSAuditor拦截。记住一句辩护词:不要相信用户输入。XSS防御的总体思路是对输入(和URL参数)进行过滤,对输出进行转义。