前言:
CSRF:跨站请求伪造,漏洞成因,网站Cookie在浏览器不会过期,只要不关闭浏览器或不退出登录,攻击者通过构造csrf脚本,执行用户不想去做的功能。本质就是在用户不知情的情况下执行请求。
两类:基于操作的csrf和读取类csrf,接下来描述的是读取类型csrf
跨域问题
由于同源策源的影响,当我们从一个域名的网页去请求另一个域名的资源是,就无法成功获取资源。如果我们要想去成功获取到资源,那么就要用到跨域。
跨域解决方案:cors、jsonp
CORS(跨源资源共享)
介绍:cors是一种ajax跨域请求资源的方式。其实现方式很简单,当使用XMLHttpReques发送请求时,浏览器发现该请求不符合同源策源,会给该请求加上一个请求头:Origin,如果确定接受请求则在响应头加上:Access-Control-Allow-Origin;浏览器判断该响应头是否含有Origin的值,如果有,则浏览器会处理响应,我们就能得到响应数据;反之,无法得到。
漏洞形成:
当浏览器判断你的操作是跨域时,会在请求数据包加上Origin字段,这样你就能够跨域,在响应包中加入Access-Control-Allow-Origin,这两个字段的值相同。当cors的配置错误时候就会产生cors漏洞。(修改请求Origin的值,在响应中也会同样的改为这个值)
JSON
通过script标签加载数据的方式去获取数据当作js代码去执行,只支持GET方式的请求
注意:其获取的数据是JSON格式的,直接作为js运行的话如何去得到这个数据去操作?我们可以在src后面加上一个回调函数showData(<script src="... ?callback=showData"></script>)
漏洞形成:
修改callback的值是否会发生变化