一个由"2020年1月7日 京东出现的重大 Bug 漏洞"引起的思考...
2020年1月7日,京东由于优惠券设置错误,导致大量产品以0元或者超低价成交,并且发货。网传小家电被薅24万件,损失损失金额高达7000多万。很多网友表示收到货了,在网上晒出到货截图。下面为购买截图:

之后,京东做出关于此事件的说明,将拦截订单,召回发货商品。
《关于2020-1-7,大量0元单活动说明》
尊敬的京东用户大家好,因为1月7日优惠券设置错误原因,导致大量产品以0元或者超低价的情况下成交,并且发货。
目前对此京东已经做出处理方案。
1,针对未发货的订单,京东已经做拦截处理,并且后续不会发货。
2,针对已经发货的产品,京东已经做出拦截处理,商品将会召回。
3,针对部分已签收的订单,如果您满意手中的产品,可以按照原价的8折购买,如果不满意请直接取消,取消后配送员将在24小时内上门取回商品,感谢您的配合。
因为这次错误给您带来的抱歉,京东深感歉意,所有被召回或者拦截的订单,处理成功后系统会自动为您发放一个20元的无门槛优惠券,作为赔偿。
感谢您对京东的支持,提前祝福各位新年快乐。
网上更是传出京东负责小家电的项目组全体被开除,年终奖金补偿没有,甚至可能还会被京东法务起诉,被问责的消息!
很多IT从业者表示职业高危性,因为一个“不小心”,就天降“重大bug”,公司遭受重大损失,个人面临赔偿甚至坐牢的风险。
这里不由得让我想起去年1月20号凌晨“拼多多薅羊毛事件”,同样是优惠券的bug,用户可以直接领取一个无门槛的100元优惠券,全场通用(特殊商品除外),有效期一年。羊毛党半夜被同伴叫醒开始疯狂薅羊毛。

之后,拼多多于20号上午9点左右把100元无门槛优惠券全部下架,之前领到未使用的优惠券也全部下架。并官方回应称,此事系黑灰产团伙利用平台漏洞进行不正当牟利,公司已第一时间修复漏洞并向公安机关报案。网传这起薅羊毛事件导致拼多多预计损失200亿。

时间再往前回到17年,有网友爆料支付宝存在一个漏洞,陌生人有1/5的机会登录你的支付宝,而熟人则可能100%登录你的支付宝。
方法是这样的:登录手机账号——忘记密码——手机不在身边——淘宝买过的东西9张图片选1个——好友验证9个好友图片选1个——重置密码——登录成功。

登录成功后拥有支付宝的全部功能。支持免密支付。甚至直接扫二维码付款不用密码。
从支付宝改密码的步骤,像通过熟人、最近购买过的商品验证,就存在很大的不安全性。对于熟人、甚至只是微信好友中的陌生人,获取这些信息很容易!!
之后支付宝针对此事做出回应:

后面有网友做出尝试,发现依据网传方式确实已经无法找回登录密码了。也就是说支付宝已经升级系统,修复了这个漏洞。
启示
以上的bug“事故”也只是因为一场热搜,被广大网友所熟知。实际软件出现的bug“事故”要多得多,有些被及时修复未被暴露到公众视野,有些暴露了只是未引起重大反响。回顾以上的这些软件“事故”,无论是运营事故,还是测试事故。在实际工作中,关于责任归属,相干利益,开发/测试/运营/风控可能都跑不脱。那作为专业的软件测试工程师,如何更有效地避免各个环节出漏子,于是有了以下思考:
- 具备过硬的专业技能,让测试工作“无可挑剔”
作为一名专业的软件测试工程师,不能因为测试技能不到位导致bug“事故”。我们首先要保证的是本职工作的严谨及无可挑剔,因此需要具备:
软件测试技能:测试流程、bug管理流程、计划/用例/报告编写、linux、数据库、相关测试工具使用;计算机网络知识、定位问题及分析等;
编程能力:例如java、Python;尽可能了解开发代码的实现逻辑,代码设计及结构、数据库结构;
产品的业务知识及行业背景:除了业务本身之外,多了解整个行业背景,竞品分析;依据不同的业务采取不同的测试策略及方法
- 跳脱传统岗位职责,多立于产品设计思考
像以上的支付宝bug,并不能说开发实现逻辑或测试覆盖上存在纰漏。而更多可能是安全等级设计上的不完善。
我们90%以上的测试工程师一切以产品为尊,完全按照产品需求进行测试。这样错了么?貌似没错。但“测试相当于半个产品经理”不能只为一句空话,要多立于产品设计本身去思考,去怀疑!
用户权限需要多层控制吗?这样设计会不会暴露安全性问题?操作步骤对于小白用户来说是否太繁琐?敏感信息是否需要加密处理?毕竟产品经理或是开发人员并不是什么都能想到,且面面俱到的。
- 提前预见“手残”行为,提升安全风险意识
像京东的bug,也许可能只是运营的一次“手残”行为,优惠券设置错误了。但因为损失过大,作为测试的我们也难辞其咎。作为一名专业的软件测试工程师,尤其是涉及钱的产品,我们可以尽量去预见下可能出现的”手残“行为,然后多考虑如果”手残“了,咱们的系统是否具备应对”手残“结果的处理能力。
比如像这次的优惠券bug,是否设定无门槛金额提醒?是否设定界面自动化巡检功能?是否对数据异常进行监控并设定报警机制,同时是否具备及时撤销功能...
- 基于用户行为,加强α、β测试
像很多问题,是需要特定的用户场景才会出现。当专业的测试团队在测试时,会受到一定的用户使用场景的限制。测试人员局限于用户个体,自然不会预想到所有用户出现的真实场景。
这个时候,α、β测试可以让大量真实用户参与其中,通过“人海战术”人为地遍历更多真实用户使用场景,并实时反馈真实场景中出现的bug。
这样当产品正式发布后,可以提前规避掉很多用户可能会碰到的问题。但这种测试方法,要基于产品本身数据安全性去做把控,不一定适用。
大家通过这次的bug“事故”,有什么感想呢?欢迎留言~
一个由"2020年1月7日 京东出现的重大 Bug 漏洞"引起的思考...的更多相关文章
- .NET编程周记第3期-2020年1月19日
整理了2020年1月19日这周阅读的几篇有趣的和.NET开发相关的文章.在这里和大家分享. 0x00 Introducing Nullable Reference Types in C# 如标题所示, ...
- 2019年IntelliJ IDEA 最新注册码,亲测可用(截止到2020年3月11日)
2019年IntelliJ IDEA 最新注册码(截止到2020年3月11日) 操作步骤: 第一步: 修改 hosts 文件 ~~~ 在hosts文件中,添加以下映射关系: 0.0.0.0 acco ...
- Webstorm 2019激活码(有效期至2020年6月5日)
Webstorm 2019激活码(有效期至2020年6月5日):https://blog.csdn.net/lt326030434/article/details/90229298
- 从通达信导出文件获取A股所有股票代号名称(至2020年2月24日)
下文是讲述如何从通达信的输出文件中获得股票信息,如果想用Java爬虫从网页爬取信息请参考:https://www.cnblogs.com/xiandedanteng/p/12808381.html 要 ...
- 2020年1月31日 安装Python的BeautifulSoap库记录
C:\Users\ufo>pip install beautifulsoup4 Collecting beautifulsoup4 WARNING: Retrying (Retry(total= ...
- .NET Conf 2020大会将于2020年11月10日--- 11月12日举行 (UTC)时区
.NET Conf 2020大会将于2020年11月10日--- 11月12日举行 (UTC)时区 开始时间 2020年11月10日 08:00 (PT) | 16:00 (UTC)| 24:00(北 ...
- Android GreenDao 在组件化项目中的一个问题 - 2018年7月5日21:15:14
组件化项目使用GreenDao时注意的事项: 1.要在组件化中的基础库(domain层)创建实体类: 2.如果sycn之后不能生产Dao文件,使用 Android Studio 的Gradle插件重新 ...
- 【Python笔记】2020年7月30日练习【python用input函数输入一个列表】
练习课题链接:廖雪峰-Python教程-高级特性-迭代 学习记录: 1.Python当中类似于 三目运算符 的应用 2.Python用input函数输入一个列表 代码实例:对用户输入的一组数字转化成l ...
- 【Python笔记】2020年7月22日练习=[定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程的两个解]
学习教程:廖雪峰-Python教程-函数-函数定义 学习记录:[定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程的两个解] 学习心得: 1.对问题进行判断分析后再下手. ...
随机推荐
- JPA 一对多双向映射 结果对象相互迭代 造成堆栈溢出问题方法
问题: JPA 在双向映射时,会相互包含对方的实例,相互引用,造成递归迭代,堆栈溢出(java.lang.StackOverflowError). 分析: 在后端向前端传递的时候会将数据序列化,转为j ...
- 报错:org.springframework.beans.factory.BeanCreationException
报错码为以下内容,把自己走的坑贴出来,免得大家如同样的坑.以下解决方法仅供参考. ERROR [RMI TCP Connection(3)-127.0.0.1] - Context initializ ...
- 地址中如果含有"+",发给服务器时"+"变成了空格问题解析
如地址为sms:+7 915 444-414-444,含有空格. 服务器解码 URLDecoder.decode("sms:+7 915 444-414-444"),返回的是sms ...
- linux 在 scull 中使用旗标
旗标机制给予 scull 一个工具, 可以在存取 scull_dev 数据结构时用来避免竞争情况. 但是正确使用这个工具是我们的责任. 正确使用加锁原语的关键是严密地指定要保护哪个 资源并且确认每个对 ...
- Spring AOP 源码分析
一.准备工作 在这里我先简单记录下如何实现一个aop: AOP:[动态代理] 指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式: 1.导入aop模块:Spring AOP: ...
- H3C系统调试的操作
- Python中&、^与and、or
导火索:给定两个列表,怎么找出他们相同的元素和不通的元素? list1 = [1, 2, 3, 4, 57, 8, 90] list2 = [2, 3, 4, 5, 6, 7, 8] lis = li ...
- excel转换成实体
package com.cinc.ecmp.utils; import java.io.IOException; import java.io.InputStream; import java.lan ...
- Linux 内核 struct device 设备
在最低层, Linux 系统中的每个设备由一个 struct device 代表: struct device { struct device *parent; struct kobject kobj ...
- Linux 内核列举设备和驱动
如果你在编写总线级别的代码, 你可能不得不对所有已经注册到你的总线的设备或驱动进 行一些操作. 它可能会诱惑人直接进入 bus_type 结构中的各种结构, 但是最好使用已经 提供的帮助函数. 为操作 ...