csrf的基本介绍

1、什么是csrf攻击

corss site request forgery  跨站请求伪造,简单的解释就是攻击者利用用户身份,发送虚假请求到服务器,让服务器处理不是用户提交的操作。

2、一个简单的例子

小李很喜欢在网上购物,购物网站WebA是他经常上的一个网站。今天,小李通过浏览器登陆了该网站,没过多久看上了一件外套,只要88,他查询了一下账户余额,恩,还有100块,正好,买衣服够了。正要付款时,QQ弹出群上有人分享的一个网站WebB。小李直接点开了这个网站,是一个壁纸下载的网站,有很多漂亮的壁纸,其中有一副壁纸无法显示,可能是网速的问题,小李并没有太在意。浏览一番后,小李没什么兴趣,关闭了WebB,在WebA上点击付款,系统提示余额不足。发生了什么!!!小李赶紧查询余额,发现此时余额已经为0了。

发生了什么呢?让我们到后台看看。WebA的付款点击操作,对应的是一个GET请求,在请求中会携带购买的商品id,用户的token信息在session中存储,WebA通过获取token,来对用户的操作进行鉴权。小李并没有执行付款的点击操作,这个请求是谁发送到WebA去的呢?答案就是WebB,小李在WebB页面上虽然没有任何操作,但是WebB上其中某一副图片的src对应的就是WebA网站的付款地址,所以小李一访问WebB,这个假的付款请求就发送到WebA去了,因为浏览器缓存了小李的token,所以这个请求在WebA看来,和小李自己点击的操作一模一样,执行了WebB的这个假请求,让小李买了不该买的东西。


WebB做了什么?页面上添加了下面这个链接,在WebA网站上发布一个假的产品

<img alt="" src="http://localhost:8080/buy.do?method=buysomething&productId=1">


4、如何防止csrf攻击

防止CSRF攻击的本质,就是能够区分出非用户提交的假消息。那么,如何区分呢?

1)WebA可以检查Http header中的referer,浏览器向Web服务发送请求时,一般会带上这个头域,告诉服务器,这个请求是从哪个页面来的。例如上面的例子,referer中的取值就是WebB的网址,如果WebA只接受来自本域的请求,那么就可以识别出该消息。




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值