•  背景

  如今,移动支付已经成为了主流,无现金支付越来越普遍,我们出门完全不用带纸币,到商店买东西、餐馆吃饭、坐车等都可以用手机支付解决,这给我们带来了很大的便利;我们再也不用担心钱包被偷或者丢掉的问题了,这一定程度上减少了偷盗的犯罪率,为社会的安定做了贡献;也减少了纸币的丢失和损耗,降低了国家货币流通的成本。而移动支付里,当属二维码支付最为流行,像微信支付,支付宝支付,二维码收款等,各行各业只要涉及到支付的问题,都会弄个二维码支付。尽管,二维码支付很方便和安全,但是也存在一定的风险,如果没有理解其本质,不考虑其安全性,将会带来一定的安全风险。下面,就将我的最近一次发现某餐饮企业二维码支付漏洞的经历分享给大家。

  • 经历

  最近发现公司周边的一家餐饮店做得很不错,虽说是快餐,但是每个菜都是小锅现炒的,菜品很美味,第一次吃肯定会让你称赞。和同事一起去这家店吃了10多天之后,趁其充值1000送500的活动,办了一个会员,然后支付的时候可以用会员里的个人二维码支付。某一天,我们吃饭讨论起来了二维码支付的问题,有个同事说,支付这样的动作涉及到钱,企业肯定会重视的,所以这个二维码应该是动态生成的,每次登录会员的时候都会变;我说,可能未必,支付宝支付、微信支付的二维码都是固定的,更何况这个小餐饮企业呢。一番争论不下,同事就说验证一下就可以了,将二维码里面的内容扫出来,如果每次都不一样,那么就是动态生成的,反之不是;不验不知道,一验吓一跳。原来,那个支付的二维码内容扫出来是会员的手机号码,每次扫都是。一下子大家都隐约感觉到了其中可能存在的安全漏洞,因为二维码的内容太简单,支付的时候后台无法确定是否是本人操作(越权漏洞),所以如果我拿别个会员的手机号生成一个二维码,然后将生成的二维码替换我那个二维码,来个“移花接木”,不就可以刷别人会员的钱了,以后每天都可以吃霸王餐啦,想想都很兴奋。为了满足我们的好奇心以及验证我们的推断,我决定亲自去试验。我将试验分成了三步

   第一步:登陆会员之后,将支付二维码截图下来,付款的时候用截图的二维码支付(每次登陆都好慢,好多人不知道可以将二维码截图下来,包括之前我也是),验证一下是否可以正常支付;经过验证是可以的,也是符合预期的。

第二步:退出会员登陆,看后台有没有做会员在登陆状态才能支付的校验,这也是它唯一能做的安全性校验了;退出会员登陆几天后再去验证,发现还是可以正常支付的。结果似乎已经越来越接近我们的推断了。

第三步:也就是大招,拿同事的手机号(他也是会员),生成了一个二维码,然后将生成的二维码替换我的二维码;拿做好的二维码去支付,也能正常支付。给大家看一下,原二维码与做好的二维码

               

    左边的是原支付界面,右边是我替换二维码之后的界面,这样看二维码的区别还是很大的。不过,现场去支付的时候,收银员是完全注意不到的。这里我把涉及到企业logo相关的信息给模糊掉了,避免给别人造成经济损失。

    经过三步走之后,结果与我们的推断完全一致,可以确定其存在支付漏洞了。

  •   漏洞产生的原因

  先说一下二维码,官方解释是:是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,直白一点就是记录一串文字(比如数字,字母等)。相同的二位码包含的信息肯定是相同的,但是相同的信息,根据不同的二维码生成策略,二维码是不一样的,所以我能自己生成二维码,然后支付的时候也能扫出来相同的信息。至于二维码的生成,自己可以写程序生成,也可以直接在网上在线生成。然后说说为什么支付宝支付、微信支付等二维码支付不存在支付漏洞,而这家企业的支付却存在漏洞。因为支付宝支付、微信支付等二维码的内容不是简单的手机号,具有一定的含义,支付的时候也需要用户输入密码确定。其他安全的二维码,有的会对内容做加密处理,或者包含更多唯一的信息等。

  •   解决方案

  说说针对这个漏洞的解决方案,其实也很简单:1、对手机号做坐加密处理,然后用加密后的串生成二维码 2、用登录后的Token和手机号号码生成二维码 ,3、用具有一定规则的一串数字作为串生成二维码,以上是三种常用生成二维码的方法。同时,用户在支付的时候要做校验是否是本人操作等。加上这些处理就能很容易避免支付漏洞了。

  此次经历分享完了,希望能给大家提升一点安全支付的意识,以后自己做二维码支付的时候不会出现安全漏洞。

转载于:https://www.cnblogs.com/pfblog/p/10082594.html

记一次发现某餐饮企业二维码支付漏洞的经历相关推荐

  1. 工行二维码支付时代来了

    全球最大商业银行工商银行和福州拾方易科技网络公司签署了特约商户联盟商圈协作拓展合作,为商家和用户的便捷推出了,你赚钱我买单!各大零售,商户,餐饮,百货入住商家和用户都可享受,二维码支付,千分二费率,满 ...

  2. 银联云闪付二维码支付对接流程和测试

    因为公司已经支持了支付宝支付和微信支付,所以需要加上一个银联的云闪付,主要是二维码支付. 银联商务的官方文档其实已经很清楚了,但是因为之前对接支付宝和微信,有一个保存商户信息的表,表结构已经确定了,再 ...

  3. PHP开发银联云闪付二维码支付

    你好,是我琉忆.最近刚好有在研究银联云闪付的支付模块,所以就写篇总结分享给大家. 这算是第二次接触支付的东西了,接触得最多的是接入微信支付,自己也有相关的总结文章,可以去segmentfault搜索& ...

  4. 银联押宝二维码支付 背后还有一片纷争江湖

    昨天银联二维码支付标准正式发布了.这被市场看做,此前存在安全隐患.饱受争议的二维码支付终于合规化了.各位以后去商家扫码,会有不同选择了:支付宝的.微信的.还有银联的.不过我估计各位还是哪个方便.哪个优 ...

  5. 关于前端调用微信二维码支付,二维码无法显示的问题

    昨天测试提交了一个bug,说是公司网站调用微信支付时无法显示微信二维码,于是去测试环境测试了一下,发现果然有问题: 此时后台日志打印了如下信息,微信接口返回的错误提示是:"invalid s ...

  6. 微信支付宝用二维码支付服务谁能征服世界

    2016年2月,国外旅游城市清迈泰旺洛餐厅的店主做了一个新的尝试,在店面的结算台接入了微信支付的移动扫码支付.此后,她发现日常开店一天的营业中,选择移动支付的超过现金支付70%~80%.这其中,很多是 ...

  7. 银联二维码支付与微信支付相比,哪个好用?

    2019独角兽企业重金招聘Python工程师标准>>> 近日,中国银联联合40多家商业银行正式推出了二维码支付产品.扫码支付你应该早就不陌生了.现在即使是摆在街边的水果摊也有二维码让 ...

  8. 移动二维码支付 推进二维码扫码智能POS

    现如今:银币.再到纸币,演变到"钱"变得越来越轻薄.在现在这个移动支付市场中,互联网技术的支撑下,刷手机乘公交.刷支付宝买菜购物.缴水电费--日常生活中使用"现金&quo ...

  9. 工银二维码支付,商户福利等你拿

    随着时代进步,技术的改进,2014年底就已经有银行和第三方支付机构开始布局二维码支付. 央行已发文确认二维码支付的市场地位,定位于传统线下银行卡支付业务的补,同时中国支付清算协会也召集专题会议,推动二 ...

最新文章

  1. Hermes实时检索分析平台
  2. asp.net core学习笔记
  3. java unicode补充字符带来的码点和代码单元问题
  4. HDU 1005 Number Sequence
  5. 电脑cmd命令大全_查询电脑IP地址
  6. win怎么打开微软更新服务器,怎样打开win10的更新服务器地址
  7. 华为服务器sn号查询网站,linux 查询服务器sn
  8. Windows配置Gtkmm开发环境(with codeblocks)
  9. 刷新table数据_关于数据透视表的刷新功能最值得了解的几个操作
  10. python socket 域名_python用socket发送http请求
  11. eclipse写javaee的时候js文件新增函数找不到
  12. JAVA上传文件 DiskFileUpload组件
  13. dex2jar官网和jdgui官网链接
  14. DSP技术:基于TMS320F28027芯片的温度测量系统
  15. 408 操作系统 知识点总结
  16. imp 导入dmp文件。
  17. 《无人机DIY》——2.11 三轴直升机
  18. php 检查货币类型_php型【货币问答】- php型所有答案 - 联合货币
  19. 聚焦基因组学研究,JMP参加第七届国际统计遗传学与基因组学高峰论坛
  20. pyinstaller 出现Cannot find existing PyQt5 plugin directories

热门文章

  1. 用数组输出26个小写字母
  2. 弹性碰撞后速度方向_高中物理竞赛典型例题精讲——垫圈弹性碰撞后速度方向...
  3. 短链接的生成之工具类的编写--三种方式(亲测可用)
  4. 百度竞价推广需要注意什么?
  5. 用到Linux的命令的总结(持续更新)
  6. Python升级pip失败解决办法
  7. 软件企业认定及软件产品登记申报表填报说明
  8. 如何对PDF文档进行数字签名
  9. 电视机尺寸与观看距离
  10. 精通 CSS+DIV 网页样式与布局 55