【背景知识】
Cookie分为2种:
临时cookie,没有expire-day,浏览器打开网页得到,关闭网页销毁。
本地cookie,有expire-day,浏览器打开网页得到,生命期结束后才销毁,不论网页是否关闭。
浏览器同时打开了A页面和B页面(二者不同域名),A页面中有B页面的资源C。
所以用户打开A页面时,会请求B页面中的资源C,发给B的数据包中就带有临时cookie,有些浏览器甚至包括本地cookie,比如FF2,FF3,Opera,Chrome,Android等。
【攻击原理】
1. 假设A也是恶意网站,A构造对资源C的请求时可以是一次恶意操作。
2. 用户访问B时已经得到了授权Cookie。
3. 用户访问A,就被发送了一次恶意操作。因为用户在访问B时携带了Cookie,被浏览器认为是正常授权操作,导致用户被执行了A的恶意操作。
这便是CSRF。
【注意】
其中Cookie作为凭证并不是必须的,那样CSRF执行起来更简单了,都不需要上述的第2步骤。
【防护】
1. Referer检测,如果Referer来自于A,B检测Referer不是B则判定为CSRF。
2. 加Token,用户先访问B得到一个隐藏在表单中的Token,用户执行操作时,会在在参数中携带Token。B检测Token有误则判定为CSRF。
3343

被折叠的 条评论
为什么被折叠?



