目录
xss是个web漏洞,攻击者可以破坏用户和web app之间的交互,攻击者可规避同源策略。
什么是xss
通常攻击者伪装成受害者用户,执行用户能够执行的操作,访问用户的数据,如果用户具有特权访问权限,攻击者就能够完成控制应用程序的所有功能和数据
原理
操作一个易受攻击的网站,利用其向用户返回恶意的js,当恶意代码在受害者的浏览器执行的时候,攻击者就可以完全破坏用户和应用的交互
下图,受害者(用户)点击了包含恶意代码的url,在恶意代码在受害者浏览器执行,攻击者就获取了其密码,敏感信息等
攻击类型
反射xss。恶意脚本来自http请求
存储xsss。恶意脚本来自网站数据库
基于dom的xss:漏洞存在于客户端而不是服务器代码
反射型xss
当程序在http请求中接受数据,并以不安全的方式将数据包含在response中就会有此问题
一个🌰
没有执行任何检查过滤,数据处理,攻击者可以构造带恶意script的
用户访问了url,攻击者的脚本在浏览器执行,脚本可以执行用户有权访问的认可操作
存储型xss
程序从不受信任的源接受数据,并以不安全的方式将该数据包含在后续的http response中,就是存储xss
存储的跨站点脚本漏洞使攻击者能够控制运行在用户浏览器中的HTML和JavaScript。使用恶意的HTML或JavaScript代码,攻击者可以改变显示给用户的页面内容和/或使用经过身份验证的用户的应用程序标识执行应用程序功能。例如,攻击者可以获得用户的会话ID,然后在该会话期间执行应用程序功能。
这些恶意脚本是在易受攻击的应用程序上下文中执行的,因此绕过了web浏览器中的同源安全机制。因此,攻击者可以利用此漏洞执行各种恶意操作,例如窃取会话id或身份验证凭据,并通过显示虚假登录页面或其他虚假信息来误导应用程序用户。
不安全的数据可能通过http请求提交的,例如发表博客评论
攻击者可以轻松的发送消息,攻击其他用户
基于dom的xss
有客户端js时,js以不安全的方式处理不可信的来源数据,将数据写回dom
没有判断过滤,直接写入html。。。
攻击者用xss干啥
冒充或者伪装成用户
执行用户执行的操作
读取用户数据
获取用户登陆凭证
注入木马
xss对保存敏感数据的应用中,影响非常大,例如银行交易,电子邮件,健康记录等
如果受害者是较高权限,影响更大
内容安全策略csp
csp是浏览器的机制,能减轻xss漏洞的影响,采用csp的应用能阻止此漏洞的利用。它限制也没加载的资源,例如脚本,图片。限制该网页是否被其他页frame。
如何防止xss
1. 过滤输入,收到用户输入时,根据预期过滤筛选
2 在输出端对数据编码,http response输出用户可控数据时,对输出进行编码并防止被解释为活动内容
3 使用响应头,确保浏览器以你希望的方式解释响应
4 内存安全策略,csp