XSS漏洞
跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,缩写:CSS)混淆,所以架构跨站脚本攻击缩写为XSS。XSS就是攻击者在web页面插入恶意的Script代码,当用户浏览该页面时,嵌入其中的js代码会被执行,从而达到恶意攻击的目的。
XSS的类型
XSS类型一般分为三种:
1.反射型XSS
反射型XSS只是简单的把用户输入的数据“反射”给浏览器,也就是需要诱使用户“点击”一个恶意链接,才能攻击成功。反射型XSS也叫作“非持久性XSS”
2.存储型XSS
存储型XSS会把用户输入的数据“存储”在服务器端。这种XSS具有很强的稳定性,当再次访问页面时会被执行
3.DOM Based XSS
实际上,这种类型的XSS并非按照“数据是否保存在服务器端”来划分的,从效果上来说也是反射型XSS单独划分出来的,因为DOM Based XSS的形成原因比较特别。这是由于客户端脚本自身解析不正确导致的安全问题。
这种利用也需要受害者点击链接来触发,DOM型XSS是前端代码中存在了漏洞,而反射型是后端代码中存在了漏洞。
反射型和存储型xss是服务器端代码漏洞造成的,payload在响应页面中,在dom xss中,payload不在服务器发出的HTTP响应页面中,当客户端脚本运行时(渲染页面时),payload才会加载到脚本中执行。
XSS防御
为防御XSS,我们首先要知道XSS攻击的本质时不安全的
HTML注入,可通过在HTML、CSS、JS、或HTTP协议层次上进行防范
输入检查
1.用户名、邮箱等表单验证(前台/服务器二次验证)
2.富文本使用白名单机制等
输出检查
HTML-Encoder
js-Encoder
HTTP头部:HttpOnly
设置cookie时加入HttpOnly,可使js脚本无法获取cookie
HTTP头部:CSP
定义允许的资源加载地址,比如图片/视频/JS脚本等
HTTPS加密访问
有效防止DOM XSS攻击
漏洞危害
XSS漏洞时发生在客户端,目的时让浏览器执行一段用户提交的恶意js代码,从而达到某种目的。
cookie劫持(窃取cookie)
后台增删改文章等操作(类似于csrf骗取用户点击,利用js模拟浏览器发包)
钓鱼,利用XSS构造出一个登录框,骗取用户账户密码。
XSS蠕虫(利用XSS漏洞进行传播)
修改网页代码
利用网站重定向
来源:freebuf.com 2021-03-06 21:00:18 by: 我爱喝牛奶i
请登录后发表评论
注册