随时支付宝和微信的线下不断推广,目前使用手机进行二维码支付已经逐渐成为一种时尚了。git
可是你们有没有思考过:这种便捷的支付方式到底安不安全呢?今天咱们就针对这个话题来进行一些探讨吧。github
先来简单说说二维码:二维码是用必定规则排布的点阵的图像来编码信息的方式。与二维码对应的是传统的“条码”(一维码)。数据库
和“条码”同样,二维码具备以下特色:安全
可是“二维码”具备更多的优势:微信
二维码曾被腾讯公司总裁 马化腾 誉为:链接线上和线下的通道。网络
随着支付宝,微信,微博等厂商的大力支持和推广,二维码的应用已经逐渐成为生活中随处可见的应用图案了。app
固然,你们最熟悉的使用场景确定是:移动支付。也是本期重点讨论的领域。学习
你们可使用第三方应用扫描微信或者支付宝提供的二维码,能够获取其中表明的含义。好比:两种应用互扫二维码。动画
微信 身份二维码:编码
http://weixin.qq.com/r/L-rg_G-EbIITrZub0097
支付宝 身份二维码:
https://qr.alipay.com/apa2uu7j3tpjyxlr00
不难看出,身份二维码实际上有用的信息就是指定的URL后面的一个串号。这个串号具备以下特色:
这样很好地兼顾了 隐私性 和 开放性 。
使用UC来扫微信和支付宝的收款二维码。
微信:
https://wx.tenpay.com/f2f?t=AQAAAEBfhXKNRIQUrs6fy4XO8p879
支付宝:
https://d.alipay.com/i/index.htm?b=RECEIVE_AC&u=mGnPJ/rNBfKKKKKDcQlNGn1mthWAVDa7vw00ow5sM4o=
明显看出,换了一个API,同时后面带上一串和用户帐号无关串号。此串号具备以下特色:
在付款二维码上,微信 和 支付宝 是差很少的,都是一串每分钟就会变一次的一串数字:
284308793673642130
此二维码信息具备以下特色:
其实上本质上就是一个付款帐号。而后扫码时自动输入这个串号,经过第三方客户端调用支付平台SDK便可以完成扣款。
此扣款场景及规则以下:支付平台默认只要用户主动出具了二维码,就代表进行了受权扣款,这有点相似于在校园卡在食堂的做用同样,小额交易免除了繁琐的受权流程了。
关于付款二维码和以前的二维码的区别以下:
关于第一点的解释,笔者在此插播一个现实生活中的小故事:
在某早餐店, 笔者问店主:为什么不作个二维码放墙上? 店主说:那玩意常常变,咱们就不知道怎么弄了。 笔者笑:你说的是付款二维码,那东西若是不变,传播出去后,你的钱会被人随便扣,可是你的收款二维码,你是否是还会担忧别人随便给你转钱呢? 店主马上明白了,笑:固然不会,别人不断给我汇款,我高兴都还来不及呢。
因此,用户只是担忧本身的钱可能被不知情的状况下被划走,可是确定是不会担忧别人给本身汇款的,这就很好的解释了 “不变” 和 “变” 的区别了。
关于第二点的解释:
经过本文的实验和介绍,你们应该对本身手机中的支付app的二维码是怎么回事有大体的了解了吧,后面一节将从安全性上对它们进行分析,敬请期待。。。
前面的章节咱们讲了支付宝和微信的二维码的主要信息载体,本部分则开始讨论其安全风险问题。
关于二维码的风险问题主要从以下几个方面来讲:
是否出现用户的私有信息随着二维码的传播而被泄露,给用户千万困扰的问题
是否出现违反用户意途的越权操做问题
在前面对二维码承载的信息的分析如此能够看出,用户私有的一些信息:
都并无体如今相应的参数当中,黑客很难根据那一串无心义的数据获悉二维码背后的真实的用户信息。固然,除非黑客攻陷了微信或者支付宝的数据库了,这基本上不太可能。经过这些串号获取到的用户昵称和头像也仅仅限制在当前app中。
身份二维码。这个由于单方面加了好友后,是须要二维码身份主人进行验证,因此不存在越权问题。
收款二维码。正如上一文中提到的,若是有人未经当事人赞成“越权”给当事人转帐,你会有意见么?
付款二维码。有过在超市支付宝付款经历的人确定知道,掏出手机,亮出二维码,收银员条码枪一过,一秒事后,钱就被扣走了。若是要说有直接的金钱损失,可能就是这个地方了吧。下面咱们来细说此场景。
在前面的文章中提到,付款二维码具备以下特色:
设想这样的场景:
超市里面,收银员A在零售系统中核算出商品价格,顾客B亮出付款二维码,A拿起条码枪扫码,完成扣款,钱从B的帐号进入到A所属的公司中。
那么这里面是否存在 越权扣款 的漏洞?
个人回答是:有,可是这须要咱们大开脑洞才能想到。
因为二维码是一种经过光线视觉来传递信息的方式,并且二维码出示的时候,并不会指定要扣款给谁,因此在顾客B出示二维码到被收银员A扫码之间的空档里面,可能会被别人截获。
固然,咱们如今都不考虑一些网络通路被攻破,数据通信被劫持和篡改的状况,就按照正常的流程来走。顾客B出示了二维码,而后由C经过设备直接提早识别了二维码,并完成了扣款。
这个C有以下可能:
他们的共同特色就是:
假如咱们这个脑洞成真了,那么就是这样的场景了:
本节的脑洞开得有点大了。可是究竟是不是耸人听闻了,还真不必定。虽然这两家公司的开发人员和产品人员也并非吃白饭的,可是黑客和黑产从业人员也更不是吃白饭的。
在上一章节里面,咱们提到过,其实支付厂商和技术人员和黑产从业人员技术孰高孰低,还真很差说。可是咱们目前仍是尽力相信暂时正方是占据上风的吧,那么支付服务厂商到底作了哪些措施来保证这个安全呢?咱们能够来分析一下。固然,本文的定位仍是给技术小白的简谱吧,技术大牛面前仍是属于献丑了。
虽然确实存在以上漏洞,可是其实细心的用户可能注意到了,微信和支付宝尽力地作了相应的措施:
直接出示付款码,让对方扫码扣款,这种方式确实是本身目前体会到的最便捷的支付方式了。可是这种方式存也确实存在必定的安全风险,因此用户在使用时,请养成良好的习惯,让二维码暴露在公众视野下的时间尽可能短,看到的人尽可能少。不然,稍微的疏忽就成了黑客们线下薅羊毛发家致富的场景了。
关于此“安全漏洞”,在技术流程上的解决方案是:
在扫码以后,加入“用户确认”环节, 要求用户在本身的app上作一个简单的交互,表示本身 知晓 并 承认 当前的扣款行为。
固然,这个“简单” 最后加一道确认环节,关于这个环节,咱们能够头脑风暴一下,我先说下本身的“脑洞”:
你们有看到这几个构想的,若是以为比较好,请转达给微信或者支付宝的产品经理,若是被采用了,请给我发个红包哦(手动龇牙表情)。
虽然本文有点脑洞大开,只是但愿你们能明白:咱们享受到了新型的便捷的付款方式的同时,实际上是牺牲了必定的安全性的。在商场使用刷卡支付,刷卡后输入密码,虽然麻烦,可是却有一个重要的“用户确认环节”,仍是能避免掉意外扣款。固然这也是产品的权衡了,看这个风险出现的几率是否值得提供商牺牲掉好的付款体验了。
如今尚未出现那种被机器视觉薅羊毛的扣款事件吧,也不知道从此会不会有,但愿是我杞人忧天了吧。
做者: | Harmo哈莫 |
---|---|
做者介绍: | https://zhengwh.github.io |
技术博客: | http://www.cnblogs.com/beer |
Email: | dreamzsm@gmail.com |
QQ: | 1295351490 |
时间: | 2017-05 |
版权声明: | 欢迎以学习交流为目的读者随意转载,可是请 【注明出处】 |
支持本文: | 若是文章对您有启发,能够点击博客右下角的按钮进行 【推荐】 |