资讯专栏INFORMATION COLUMN

困扰了一个晚上的csrf问题

cyrils / 2755人阅读

摘要:小明是这个商城的一个用户,已经通过了认证,并且是通过实现认证的。浏览器就会自动在这个请求上加上之前认证过的,而服务端是通过这个验证是否本人操作的,这样黑客就在小明完全不知情的情况下就得到了这个订单的详情。

昨天晚上偶然看到csrf这个问题,所以就去了解了一下csrf到底是个什么东西。
百度定义:

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性

一个简单的例子:

某网上商城获取一个订单详情的接口是127.0.0.1/orders/orderId,并且需要认证过后才能访问这个接口
口。小明是这个商城的一个用户,已经通过了认证,并且是通过cookie实现认证的。现在一个黑客也想要访问小
明在商城中某个订单的详情,他该怎么做呢?很简单,只要在某个地方发布一个链接地址是 
127.0.0.1/orders/orderId这个接口,诱使小明去点击这个链接发送请求。浏览器就会自动在这个请求上加上
之前认证过的cookie,而服务端是通过这个cookie验证是否本人操作的,这样黑客就在小明完全不知情的情况下 
 就得到了这个订单的详情。这个接口的操作如果是 购买一个商品,删除邮件的话,后果将非常可怕。

为什么会出现上面这种情况呢?

因为cookie是在向这个网页发送请求时自动携带的,而我昨天困扰的问题就是为什么token会比cookie安全。        
原因其实就是token一般存在sessionStorage或localStorage中,而它不能在本站点之外的其他站点获取 
到,所以就算你在别处点击了一个包含这个接口的链接也不会导致token泄露。

如何防范csrf攻击?
1.尽量使用POST,限制GET

post相对get来说更安全,但是还是能在链接中嵌套一个表单然后提交

2.设置浏览器cookie策略

禁止在第三方网站上使用cookie

3.加验证码

每次发送重要请求都通过验证码和服务端进行认证,这也非常安全,但是用户体验不好,重要的操作可以这也,但你不能关注一个用户或者发布一个帖子也需要认证一次吧。

4.增加referer请求头检查

referer请求头的值就是请求来源的地方,服务端可以通过判断这个来源去分辨是否时csrf攻击,但是一些黑客还是能通过一些技术很容易的去更改这个请求头的值

5.使用token

这是最普遍的方法,每次发送请求都携带这个token,它与cookie不同的是,token可以是无状态的,即服务端可以不用保存关于token的值,而是每次通过计算验证这个token来判断是否是当前用户。

黑客还有没有其他方法能获取到小明订单的详情?

是可以的。黑客可以在商城一个商品的评价下面写入一个js脚本并且通过图片伪装起来,只要小明查看了这个评价,这个js脚本就会自动加载,黑客就可以通过这个js脚本去获取token值并且发送请求,因为当前js脚本是在本站内执行的,所以是可以访问到token。上面这个攻击方式就是xss,通过在用户访问的页面嵌入js代码使用户或服务端受到攻击。

其实xss就是csrf的一种实现方式,xss的防范比较困难,因为黑客可以通过很多方法在网页中插入js或html代码。可以通过在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击。而关于xss防范又是另一个话题了.....

可以简单理解为csrf是让用户在不知情的情况,冒用其身份发起了一个请求,而xxs就是通过在网页上插入js或html代码发动攻击

写的比较乱,就是token和cookie这里没有理解透导致这么久才搞懂这个问题。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/103604.html

相关文章

  • 网站攻击中csrf和xss

    摘要:何方神圣中文名字是跨站请求伪造,做的事情就是在别的网站,以你的名义对你登陆认证过的网站搞事情。中文名字是跨站脚本,做的事情就是在有漏洞的网站,写个攻击,或者存个另类的数据到网站数据库,对使用网站的用户造成困扰,属于站内攻击。 CSRF、XSS何方神圣 CSRF(Cross-site request forgery) 中文名字是跨站请求伪造,做的事情就是在别的网站,以你的名义对你登陆认 ...

    Betta 评论0 收藏0
  • Cesar竞赛平台项目中期总结

    摘要:竞赛平台项目中期总结软件谢运帷我们小组的选题是大学生竞赛平台项目,经过我们需求分析,原型设计等等步骤,我们终于要开始着手实现这一个庞大的竞赛平台项目。 Cesar竞赛平台项目中期总结 软件51 谢运帷 2015013185 我们小组的选题是大学生竞赛平台项目,经过我们需求分析,原型设计等等步骤,我们终于要开始着手实现这一个庞大的竞赛平台项目。我们使用Django+mysql处理后端逻辑...

    rainyang 评论0 收藏0
  • 稳定高于一切金融行业如何用容器?

    摘要:在谷歌不是这样,谷歌不会把特定的应用装在某台服务器上,业务应用和服务器的强绑定对于谷歌这种量级的数据中心的维护难度太高了。但是金融机构的数据中心规模不像谷歌这么大,所以能做到业务应用和硬件的强绑定。 复杂的基础IT架构是传统金融的现状,如何快速响应用户需求,加快新业务上线速度,缩短产品的迭代周期? 数人云在容器落地金融云的2年实践中,实现金融核心业务技术WebLogic、J2EE、Or...

    scola666 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<