会经常发生在内容驱动、用户保存数据的社区网站上,比如具备论坛发帖、商品评论、用户私信等功能的网站,危害比较大,可以说是永久型的
反射型XSS漏洞常见于具有通过URL传递参数的功能网站,如网站搜索、跳转等,需要引导用户主动打开URL,和存储型XSS攻击的区别是反射型存储在URL中,存储型存储在数据库中
DOM型XSS攻击主要是前端浏览器直接取出恶意代码,而前两者是由后端先取出再拼接返回。
比如是诱导用户点击后往img标签src属性里插入恶意脚本等
以上三种XSS攻击主要都是要攻击者构造恶意的脚本执行攻击,存储型和反射型主要是后端安全问题,DOM型主要是前端安全问题
通用型XSS,UXSS,主要是浏览器和浏览器扩展漏洞造成产生XSS并执行代码的XSS攻击,浏览器的漏洞到被官方发现解决都要有一段时间,并且许多的浏览器扩展程序漏洞更多,这一过程很有可能被用于UXSS。
比如一些浏览器扩展漏洞可以造成从外部获取数据填充网页表单,伪造文件访问邮件网站设置添加转发地址等
突变型XSS,MXSS,大概是用户提供的原本是安全的文本信息,但一些意外的变化,可能使得原本正常的标签等不再是正常的,浏览器执行的时候会出现意外的情况
大多数MXSS是通过恶意脚本拼接在innerHTML中,通过意外的转义各种情况导致恶意的攻击
详见这一次,彻底理解XSS攻击
XSS攻击有两大要素
过滤调用户输入时攻击者伪造的脚本的代码,但攻击者绕开前端输入直接构造请求就可以避免掉
在前端渲染的过程中,明确告诉浏览器,下面要设置的内容是文本(.innerText),还是属性(.setAttribute),还是样式(.style)等等。浏览器不会被轻易的被欺骗,执行预期外的代码了。并在JS中,可以使用textContent或者innerText的地方,尽量不使用innerHTML;
主要是防止JS把不可信的数据当作代码执行,尽量使用 .textContent、.setAttribute(),减少使用.innerHTML、.outerHTML、document.write()
把 & < > " ’ / 这几个字符转义掉,不过只对于HTML标签文字内容和属性值有效,其他的CSS内联样式,内联JSON无效,也可以使用一些完善的转义库进行转义
美团XSS
这一次,彻底理解XSS攻击