详解详解WEB攻击之攻击之CSRF攻击与防护攻击与防护
CSRF 背景与介绍
CSRF定义: 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写
为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消
息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利
用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿
发出的。
CSRF地位:是一种网络攻击方式,是互联网重大安全隐患之一,NYTimes.com(纽约时报)、Metafilter,YouTube、Gmail
和百度HI都受到过此类攻击。
对比XSS:跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信
任。
CSRF 攻击实例
daguanren(大官人)在银行有一笔存款,输入用户名密码登录银行网银后发送请求进行个人名下账户转账 :
将daguanren1中的999块转到了daguanren2账号中。通常用户登录后,系统会保存用户登录的session值(可能是用户手机
号、账号等)。但如果这时daguanren不小心新开一个tab页面进入了一个黑客jinlian(金莲)的网站,而金莲网站的页面中嵌
有如下html标签:
这个请求就会附带上daguanren的session值,成功将大官人的888元转至jinlian的账户上。但如果daguanren之前没有登录网
银,而是直接打开jinlian的网站,则由于没有session值,不会被攻击。以上示例虽然是get请求,post请求提交的表单同样会
被攻击。
所以要被CSRF攻击,必须同时满足两个条件:
1.登录受信任网站A,并在本地生成Cookie。
2.在不登出A的情况下,访问危险网站B。
CSRF 攻击的对象
在讨论如何抵御 CSRF 之前,先要明确 CSRF 攻击的对象,也就是要保护的对象。从以上的例子可知,CSRF 攻击是黑客借
助受害者的 cookie(session) 骗取服务器的信任,但是黑客并不能拿到 cookie,也看不到 cookie 的内容。另外,对于服务
器返回的结果,由于浏览器同源策略的限制,黑客也无法进行解析。因此,黑客无法从返回的结果中得到任何东西,他所能做
的就是给服务器发送请求,以执行请求中所描述的命令,在服务器端直接改变数据的值,而非窃取服务器中的数据。所以,我
们要保护的对象是那些可以直接产生数据改变的服务,而对于读取数据的服务,则不需要进行 CSRF 的保护。比如银行系统
中转账的请求会直接改变账户的金额,会遭到 CSRF 攻击,需要保护。而查询余额是对金额的读取操作,不会改变数
评论10