CSRF概念: 跨站请求伪造。
基本原理:合法用户登录网站A没有退出,然后用户A登录了钓鱼网站网站B,
网站B要求用户A访问网站A,这时因为用户A已经登录且没有退出,所以就可以直接登录,这时假如网站A是银行网站,网站B是钓鱼网站链接时攻击代码,要求用户A转账给b :1万块,http://bank.example/withdraw?account=A&amount=10000&for=b,这时用户在不知情的情况下执行了这段代码,然后转账给了b。
防御措施:在请求头里面增加token,让服务器去验证。或者不能用请求get方式。
目前做的系统能否抵抗CSRF呢?
解:不行,虽然已经做了token验证,但是这里的用户信息和token全部放在了localstrorage里面,在其它窗口网站打开这个网站链接,这个网站链接在窗口已经登录且没有退出的情况下,可以直接访问操作,因token和用户信息直接从浏览器localstorage可以获取。
方案:将token信息存储在sessStorage里面。其它窗口打开不能获取。这里需要注意的是,页面及标 签页仅指顶级窗口,如果一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是可以共享sessionStorage的。
另外种方式:假如将登录信息放在cookie的话,那么CSRF是如何进行获取信息然后跨域的呢?
解:1: 跨域是浏览器的同源策略,是浏览器发现不同源赌塞了返回结果信息。
2:可以绕过同源策略,使用iframe/img/script的标签带过去cookie.
网友评论