CSRF与Cookie

来源:互联网 发布:python关键字怎么看 编辑:程序博客网 时间:2024/06/05 06:28

【背景知识】

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。


0 0
原创粉丝点击