1 csrf攻击的原理是什么? 当你取得A网站的信任后,访问B网站,在B网站含有伪装的访问A请求,这样你就带着A网站的cookie,去访问A的后台。
2 跨域不能访问cookie,为什么在B网站能携带A网站的cookie。可以把图片的crc属性编辑成一条访问A网站的请求。由于你访问的是A网站,携带A网站的cookie是理所应当的。
3 如何防范?http的请求头有个reffer属性,代表了请求的来源,就是从哪个网站发起的请求。后台校验请求是否来自A网站,如果不是则拦截请求。绝大多数的情况下是可行的,不过某些旧浏览器,如早版本的ie,据说可以修改reffer,有些其他技术貌似也可以修改新的浏览器。
4 另一种方式是token验证。在登录成功后,服务端生成一个随机token给浏览器。浏览器在提交表单的时候携带token,后台校验token与给浏览器的是否相同,如果不一样则拦截。
5 注意的是,这个token不能存储到cookie中,因为csrf攻击就是骗取你的cookie,放在cookie中工作就白费了。想到的方法是存到js的全局变量中。