1.1. 定义
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack或者 session riding,通常缩写为 CSRF或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨站脚本(XSS)相比,XSS利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
跨站请求伪造攻击,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个用户自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求是发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
Note
简单来说就是你点击我构造的恶意链接,我就可以以你的名义去发起一个http请求
1.2. 举例
-
假如X银行用以执行转账操作的URL地址如下
https://bank.example.com/withdraw?amount=1000&to=PayeeName -
一个恶意攻击者在另一个网站中
https://evil.com/中放置如下代码html <img src="/https://bank.example.com/withdraw?amount=1000&to=Bob" /> -
如果有登陆了X银行的用户访问恶意站点
https://evil.com/,那么就会携带cookie去请求对应的转账URL,向Bob转账1000元
Note这种恶意的网址可以有很多种形式,藏身于网页中的许多地方,只要能让受害者发起对应的请求即可,如上述中的转账请求。
攻击者也不需要控制放置恶意代码的网站,例如他可以将这种地址藏在各大论坛,博客等任何用户生成内容的网站中,这意味着如果服务端没有合适的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险。
通过例子也能够看出,攻击者并不能通过CSRF攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户的浏览器,让其以用户的名义执行操作。
1.3. 攻击流程

具体的攻击流程如下:
-
用户正常登录web服务,并一直保持在线
-
服务器返回用户凭证Session ,并将其保存在Cookie中
-
攻击者生成payload,并放置在用户可访问的地方
-
攻击者诱导用户点击在第3步放置的链接,此时用户一直在线,且是用同一浏览器打开(保证Cookie未失效)
-
用户点击恶意链接
-
恶意链接向服务器请求,由于用户Cookie未失效,就携带用户Cookie访问服务器<


260

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



