1 什么是跨站请求伪造攻击(CSRF)
攻击者盗用你的身份(cookie),以你的名义发送恶意请求。
2 什么是浏览器同源策略
如果网页之间不满足同源要求,则无法共享cookie、localStorage和indexDB,无法发送ajax请求,DOM 无法获得。
同源是指相同协议,相同域名,相同端口
3 为什么要有同源策略
用户登录完银行网站,这时去访问其他网站,其他网站可以直接伪造请求将用户的银行钱转走;(如果没有同源策略这时会自动携带用户刚刚登录银行cookie)
4 浏览器已经限制跨域为何还会有CSRF
浏览器的同源策略的确限制跨域的cookie使用,但这只是针对ajax或者<script>访问。下面的情况都可以正常使用cookie:
a 直接通过windo.location.href=xxx 重定向跨域
b 通过<form> 表单跨域提交,不论post或者get
c 通过<ifram> 打开跨域连接
5 防御CSRF的方式
a 验证HTTP referer
b 通过自定义token。网站每次进入一个页面都必须由后端生成一个token 通过预编译(php 模板) 或者请求头方式传给前端,前端每次请求都要带上上一次请求的返回的token,token 可由后端加密