XSS(跨站脚本攻击)
- 在web安全领域中,xss和csrf是最常见的的攻击方式。
- xss,即Cross Site Script ,是跨站脚本攻击
- 其原本缩写是CSS,为了和层叠样式表也就是我们常说的CSS有所区分,因而在安全领域叫做XSS。
- XSS攻击是指攻击者在网站上注入恶意的客户端代码,通过恶意脚本对客户端网页进行篡改,从而在用户浏览网页时,对用户浏览器进行控制或者获取用户隐私的一种攻击方式
- 攻击者对网页客户端网页注入的恶意脚本一共包括javaScript,有时也会包含Flash和HTML。有很多方式进行XSS攻击,但他们的共同点为:将一些隐私数据,比如cookie,session发送给攻击者,或者将受害者定向(用特殊图片勾引点击)到一个由攻击者控制的网站,在受害者的机器上进行一些恶意操作。
- XSS攻击可以分成3类:反射型(非持久型),存储型(持久型),基于DOM
XSS类型
- 反射型:攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面
- 常见案例:在查询类型的输入框输入代码
,会弹出提示框
- 常见案例:在查询类型的输入框输入代码
- 存储型:代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)
- 常见案例:在存储类型的输入框输入代码,当用户每次进入页面都会提示信息
- DOM型:客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。
- 和反射型型类似:在输入框插入等HTML标签
- 解决方法:输入过滤,过滤掉<>输入的标签,注意也要过滤<>标签的转码形式
csrf
- 含义:伪造请求,冒充用户在站内的正常操作。
- 我们知道,绝大多数的网站是通过cookie等方式辨别用户的身份,再予以授权。所以要伪造用户的正常操作,最好的方法是通过XSS或欺骗链接等途径,让用户在本机发起用户所不知道的请求。
- 防范:主要由后台进行验证。
- 判断请求头
- 添加token验证,并且token信息不能存储在cookie中
- 加验证码(登录的时候)