Laravel框架CSRF攻击

在平时的生活中 我们经常遇到网络诈骗 。类似的攻击者通过各种手段给我们发送误导信息 篡改网页 内容 使我们上当受骗。而CSRF(跨站请求伪造)就是利用的网站对用户网页浏览器的信任,通过一些 技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息, 甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户 操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用 户的浏览器,却不能保证请求本身是用户自愿发出的。

示例:
假如一家银行用以运行转账操作的URL地址如下:
http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName

那么,一个恶意攻击者可以在另一个网站上放置如下代码:
< img src=“http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman”>

如果有账户名为Alice的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失1000资金。

这种恶意的网址可以有很多种形式,藏身于网页中的许多地方。此外,攻击者也不需要控制放置恶意网址的网站。例如他可以将这种地址藏在论坛,博客等任何用户生成内容的网站中。这意味着如果服务端没有合适的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险。

透过例子能够看出,攻击者并不能通过CSRF攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义运行操作。

                                                                 **-----示例转自百度百科**

所以为了防止这种事情的出现 ,Laravel框架出现了一个新的验证方式

< input type=“hidden” name="_token" value="{{csrf_token()}}" >

这个csrf_token()的原理就是当用户访问需要登陆信息的页面的时候,会生成一个csrf的随机字符串,并且cookie中也存放了这个随机字符串,当用户再次提交数据的时候会带着这个随机字符串提交,如果没有这个随机字符串则无法提交成功,系统会认为csrf攻击从而拒绝该请求。

这种方法使csrf攻击的成功率大大降低,使攻击者无机可乘。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章