转载:删库跑路真的发生了!!!

虎扑用户252916
楼主 (虎扑)
程序员经常相互开玩笑说,大不了我们“删库跑路”,这是一句玩笑话,基本上也没有人这样干,但是这两天我看到了一个新闻,真有人这样干了,还是一名技术总监。 事情的经过大概是这样子的: 邱某是某某科技公司的技术总监,2014年入职到杭州的一家科技公司,这家公司的主业业务是提供 SaaS 服务。 从2014年入职到2018年,公司的主要系统都由他搭建,包括公司的SAAS系统、API系统、电子合同的签署等服务,2018年初公司大概有4万多用户。 不知道由于什么样的原因,2018年4月,老板宓某某找到邱某,告诉他让他尽快离职,后面他也提交了辞职报告,但是心里一直都很不爽。 到了2018年的6月,他的家人也知道了这个事情,家人也很气愤,可能又说了一些什么,这个时候邱某越想越生气,心生报复的打算。 没过多久(18年6月23日10时)就在自己家里面,远程登录上了公司在阿里云的数据库,当然为了不是很明显,他选择删除了数据库上的一些关键索引和部分表格。 大家都知道索引是数据库优化的常用技术,如果在访问量比较大的系统中删除,会直接导致服务 CPU 飙升、数据库查询缓慢,甚至直接导致数据库宕机。 他删除没多久后,公司的业务果然就出了问题,系统访问变慢、接口报错、个别服务直接瘫痪,他也看到了公司内部有人说系统不能用了。 可能他当时这些操作只是脑子一热,发现事情有点搞大了之后,中午 12:00 左右的时候又把一些主要的索引给加上了。 到了中午13:00 看到内容部同事说又恢复正常了,他就没有放在心上了。 到了晚上21:00 的时候,公司的业务访问高峰到了,因为并不是所有的索引都恢复了,然后服务器又挂了。 导致公司从10:21:59-13:47:13及21:17:42-23:07:49期间无法正常运行,累积时间共5小时15分钟。造成直接经济损失225万元,故障处理人力成本7.12万元。 因邱某自愿认罪并赔偿了公司8万元,杭州市余杭区人民法院酌情予以从轻处罚,并对被告人邱某判处有期徒刑二年六个月,缓刑三年。

 

🔥 最新回帖

虎扑用户355237
143 楼
引用 @吹个大气球8886 发表的:
代码没有code review?

小公司没有,而且很多也就是走个过场,差不多得了,看别人代码很累的。

一位修仙朋友
142 楼
引用 @西雅特车主 发表的:
那不就是什么都不用做,正常上班就行了
就我们公司那稀烂的管理水平,耦合是必然的

我也是这么认为的,烂公司炸是早晚的事,好公司有能人在会给你重写掉。有那个精力去专门写复杂的代码,不如gayhub上逛逛

虎扑用户162222
141 楼
引用 @西兰骑士 发表的:
简单比喻成盖房子砌墙,砌得不直,但房子暂时能用,但用一段时间就塌了。查到你就可以说手艺不精。删库跑路相当于直接把地基给挖了

删库跑路应该是把别人合法的房子无故给挖了。。。全赔偿都不过分

虎扑用户918889
140 楼
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

有这种心理的人怕是早晚会遭报应

D
DickL0ver
139 楼
引用 @JackCaptain 发表的:
现在有木有补丁 增强CPU性能

没有

 

🛋️ 沙发板凳

虎扑用户019514
那有没有ssh登陆后不会被记录的方法

一麦永相承
都有错吧。不知道怎么评论……

纠结的腰围
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

抓洛璃
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

太强了

虎扑用户732893
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

又不是查不到你

花督不得鸟
引用 @拉飚的名字 发表的:
又不是查不到你

查到我,我也是技术不够啊

虎扑用户011128
引用 @花督不得鸟 发表的:
查到我,我也是技术不够啊

删库这普通员工可没有权限,有权限的你说自己不懂删库,说不过去的

C
Coolspring
我已经把rm命令alias成ll了,防止手贱😂

y
ysys2010
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

难怪会有那么好赚bug,原来都是套路

专投老太太裤衩
引用 @拉飚的名字 发表的:
又不是查不到你

查到了有几把用

大龄祖传单身狗
引用 @Coolspring 发表的:
我已经把rm命令alias成ll了,防止手贱😂

新版centos不能直接执行这个命令了

F
FPX丶小天
引用 @花督不得鸟 发表的:
查到我,我也是技术不够啊



不怎么养的小草
引用 @花督不得鸟 发表的:
查到我,我也是技术不够啊

什么意思,大佬能解释一下吗,外行人想了解一下

被盗号两次
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

删库太明显了
正确做法是留下BUG,
定时“维护”才能不出问题
超期没“维护”数据自动随时乱数修改。

这当事人笨就笨在,他是在事后通过远程方式修改的,留下了记录。
被盗号两次
引用 @不怎么养的小草 发表的:
什么意思,大佬能解释一下吗,外行人想了解一下

BUG是技术原因,不是人为原因。
在法律上没有任何问题。
a
anky_end
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

离职后远程登录被抓就不奇怪了

真要搞应该从源头设计就开始挖坑,有点类似你说的bug,但是不能删库,恰恰相反的是不删……等数据自己爆炸后谁也维护不了

a
anky_end
思路大概是在职时候使用自动维护脚本做数据维护但是秘而不宣,离职前取消这个脚本……然后不说这个坑,等数据膨胀爆炸到索引也没用时候就……

不过有技术水平本事这么玩的牛人老板也不敢随便开

沈_大仙
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

正确做法是离职前做一些过耦合的优化,离职后什么都不用做,💣爆炸只是时间早晚🐶

血染冰霜泪
引用 @拉飚的名字 发表的:
又不是查不到你

并不是所有的数据库操作都能找回,对应的表删了,后来的人还真可能看不出来

他哦他哦
引用 @拉飚的名字 发表的:
又不是查不到你

这种查到了你能定什么罪?

a
anky_end
引用 @拉飚的名字 发表的:
又不是查不到你

如果是留bug查到也没办法追责,不过有影响的bug暴露一般也快……

无心穿堂风


s
suda305
引用 @anky_end 发表的:
思路大概是在职时候使用自动维护脚本做数据维护但是秘而不宣,离职前取消这个脚本……然后不说这个坑,等数据膨胀爆炸到索引也没用时候就……

不过有技术水平本事这么玩的牛人老板也不敢随便开

确实,毕竟有程序测试员,不留脚本不行。

s
suda305
引用 @他哦他哦 发表的:
这种查到了你能定什么罪?

首先你留的bug小毫无意义,留的bug大在程序测试阶段就过不了关,还是需要前期做个脚本临走前删,事后远程操作怕是不聪明。

G
GeBron
小公司可以这么搞,大公司代码团队审核,专职运维发布…开发就老实点吧

虎扑用户351541
引用 @无心穿堂风 发表的:

这是真的狠啊

虎扑用户687746
引用 @无心穿堂风 发表的:

卧槽真的假的啊

W
WindowsPentest
引用 @被盗号两次 发表的:
BUG是技术原因,不是人为原因。
在法律上没有任何问题。

你们的主管呢 你们的测试呢 没测试就上生产环境的?

断水流大师兄0
引用 @无心穿堂风 发表的:

辣是真滴牛皮

虎扑用户005000
写点不知道变量啥意思的垃圾代码就行了

一派胡言昂
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

妙啊🐶

魔王耀
搞破坏是违法的

湖人基石tcao乐邦街
引用 @WindowsPentest 发表的:
你们的主管呢 你们的测试呢 没测试就上生产环境的?

删的就是生产环境数据库索引

W
WindowsPentest
引用 @湖人基石tcao乐邦街 发表的:
删的就是生产环境数据库索引

小公司吧 一般来说不会有这个权限的

萧瑟丶
引用 @无心穿堂风 发表的:

他到底做了什么

湖人基石tcao乐邦街
引用 @WindowsPentest 发表的:
小公司吧 一般来说不会有这个权限的

技术总监应该有权限的🐶

虎扑用户104803
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

有代码规范的公司不会出这种事情,通常代码提交之后要组长和其他同事review通过,运维才会把程序或服务打包部署上服务器,基本上杜绝了绝大多数的隐藏bug。
要是三个人连着反了公司当我没说🐶

柴科夫飞机
杭州、saas、阿里云。莫非二维火?这两年一直欠薪

湘江
引用 @花督不得鸟 发表的:
查到我,我也是技术不够啊

一看就是个老八哥了

吹个大气球8886
引用 @湖人基石tcao乐邦街 发表的:
删的就是生产环境数据库索引

现在早就都在云上且有备份了 很多公司更是两套的prod 一个挂了立刻切换另一个到live

吹个大气球8886
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

代码没有code review?

湘江
引用 @anky_end 发表的:
离职后远程登录被抓就不奇怪了

真要搞应该从源头设计就开始挖坑,有点类似你说的bug,但是不能删库,恰恰相反的是不删……等数据自己爆炸后谁也维护不了

你应该把代码写得谁都看不懂,再到里面藏几个一般缺陷,就差不多了。当然要没有代码评审,不然GG

大阳哥eric
引用 @WindowsPentest 发表的:
你们的主管呢 你们的测试呢 没测试就上生产环境的?

Ios这么长时间了还是有漏洞

虎扑用户371353
引用 @anky_end 发表的:
思路大概是在职时候使用自动维护脚本做数据维护但是秘而不宣,离职前取消这个脚本……然后不说这个坑,等数据膨胀爆炸到索引也没用时候就……

不过有技术水平本事这么玩的牛人老板也不敢随便开

我以前公司有个定时任务下载官方文件解析,然后清理有点问题,但是我然后我就写了个sh脚本,手动执行,现在离职三个多月了,想想不清理的话也有1T了吧

虎扑用户399461
引用 @萧瑟丶 发表的:
他到底做了什么

删了整个服务器数据,包括服务器系统

花督不得鸟
引用 @WindowsPentest 发表的:
你们的主管呢 你们的测试呢 没测试就上生产环境的?

这个就不能关我的事了,我写出来的代码 主管 测试没问题 现在出问题还能赖我不成🐶

花督不得鸟
引用 @无心穿堂风 发表的:

说起来搞笑,让一个新手有管理权限老板也是新大

e
eStar职业竞技俱乐部
引用 @花督不得鸟 发表的:
这个就不能关我的事了,我写出来的代码 主管 测试没问题 现在出问题还能赖我不成🐶

照你这么说,公司其他人都是吃干饭啥都不会的,那还做什么程序

虎扑用户695127
引用 @爱吃包子的鱼 发表的:
有代码规范的公司不会出这种事情,通常代码提交之后要组长和其他同事review通过,运维才会把程序或服务打包部署上服务器,基本上杜绝了绝大多数的隐藏bug。
要是三个人连着反了公司当我没说🐶

请问老哥 国内的公司部署是人为操作的?还是就是走自动的程序 然后人看一眼没问题就可以了

羅先森
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

你说的这种bug根本不好留,一般上生产环境的代码就很难出那种让系统蹦的bug,测试都会测的。不过搞点小毛病是没问题的。但是基本上出现问题别人跑一遍,基本都能定位到问题。除非你写的确实很隐蔽。

a
again丨
引用 @eStar职业竞技俱乐部 发表的:
照你这么说,公司其他人都是吃干饭啥都不会的,那还做什么程序

不做备注的话其他人看不懂太正常了

花督不得鸟
引用 @eStar职业竞技俱乐部 发表的:
照你这么说,公司其他人都是吃干饭啥都不会的,那还做什么程序

总有一些人游手好闲的不是吗?

控球中锋隆多
让我想起我实习的时候,在一家车企当内勤,我的前任是个沙雕,把某个季度的销量信息和库存给删了,害得后来接手的我花了一个多星期的时间,才把信息给补完整

y
yahweh4869
引用 @血染冰霜泪 发表的:
并不是所有的数据库操作都能找回,对应的表删了,后来的人还真可能看不出来

这就是我们做安全的需要注意的事情了。甚至数据库也自带这个功能,就是所有的操作都要有记录,记录不能被篡改且至少保存半年。这叫做日志审计,更复杂的叫siem或soc系统。
审计的信息包括你删库的ip、时间、账号等。

诗人yes
引用 @拉飚的名字 发表的:
又不是查不到你

程序还想没bug?离职后留名下留一堆bug的人多了去了

虎扑用户612825
引用 @攻玉の石 发表的:
卧槽真的假的啊

出主意这人也跑不了吧

s
skt_White3Zz
引用 @我爱你么么哒你爱我不 发表的:
请问老哥 国内的公司部署是人为操作的?还是就是走自动的程序 然后人看一眼没问题就可以了

生产包肯定要检查了再打的,测试环境一般会走持续集成。

虎扑用户217610
引用 @拉飚的名字 发表的:
又不是查不到你

查到又怎么样?就说自己写的时候不小心出的bug,别人不知道没有做优化后面自然会出问题。

m
moontype
引用 @again丨 发表的:
不做备注的话其他人看不懂太正常了

代码想上线必须有第二个人看懂才行

我怎能变态
引用 @无心穿堂风 发表的:

我觉得蛮假 我搞网络的都知道架设的网站有毒 应该去工程里找

招进来的运维不可能这都不懂吧

我怎能变态
引用 @华一南一师大奇异果 发表的:
我以前公司有个定时任务下载官方文件解析,然后清理有点问题,但是我然后我就写了个sh脚本,手动执行,现在离职三个多月了,想想不清理的话也有1T了吧

不crontab你也是够坏的

h
henrybird
bug问题只要代码过了code review就有办法甩锅,离职后远程操作这就没得救了。

把代码写的看不懂也是要有水平的,违反代码书写规范还要能过测试,写代码的也很累。

西
西雅特车主
引用 @沈_大仙 发表的:
正确做法是离职前做一些过耦合的优化,离职后什么都不用做,💣爆炸只是时间早晚🐶

那不就是什么都不用做,正常上班就行了
就我们公司那稀烂的管理水平,耦合是必然的

浦城布莱恩特
引用 @WindowsPentest 发表的:
你们的主管呢 你们的测试呢 没测试就上生产环境的?

你们公司线上的代码,你敢保证没有bug。?

佘军哥哥
引用 @Coolspring 发表的:
我已经把rm命令alias成ll了,防止手贱😂

我一直用rm -rf删除,还都是用root用户,但是公司重要的机器一般都不给root密码的,很多机器都会对rm -rf命令进行保护,有的直接不让删除根目录,有的是需要二次确认,只要不是故意删除的,手贱根本不可能删除成功。

薛定谔的腊肉
好点的公司都有code review,没过不能合并到主分支上,写点垃圾代码什么的不可能的,除非你几个review的同事都不想干了。强行合并还不让人发现也是不可能的,所以有这心思还不如干点别的

伊龙J
引用 @eStar职业竞技俱乐部 发表的:
照你这么说,公司其他人都是吃干饭啥都不会的,那还做什么程序

不是每一个bug都是测试一遍就能看出来的…
你一个项目几千行代码,也不会有人能够看完一遍就de掉所有的bug的,那不叫人,那叫神仙。
总而言之有bug是一件很正常的事情… 而且bug这东西我不觉得是一个可以数的量,而是一个boolean… 他只有“有”或“没有”两种状态,而在大多数情况下都是“有”的

f
feng102567
引用 @不怎么养的小草 发表的:
什么意思,大佬能解释一下吗,外行人想了解一下

明明有黄金的实力,却表现的跟青铜一样?

地方武装组织
问题难道不是出在老板让他离职他就离职了吗,这也太听话了

x
xdhqyz
引用 @伊龙J 发表的:
不是每一个bug都是测试一遍就能看出来的…
你一个项目几千行代码,也不会有人能够看完一遍就de掉所有的bug的,那不叫人,那叫神仙。
总而言之有bug是一件很正常的事情… 而且bug这东西我不觉得是一个可以数的量,而是一个boolean… 他只有“有”或“没有”两种状态,而在大多数情况下都是“有”的

除非trivial code,否则没有“没有”这个选项

t
tuoqiushijie
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

删库这种行为太好查了,而且查出来解释不了,多留几个死锁才是王道

虎扑用户088090
直接删库是有问题的,多埋几个坑还好

A
AllEyesNorth
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

没有code review吗。。这种可能性在稍具规模的公司不存在的

虎扑用户980469
引用 @湘江 发表的:
你应该把代码写得谁都看不懂,再到里面藏几个一般缺陷,就差不多了。当然要没有代码评审,不然GG

毫无职业操守

神龙之祖2015
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

一是留一些给关联系统输出的日志就行,类似于数据库审计级别的,到时候肯定崩,关联系统数据库管理员负责任。
二是互联网应用埋一些业务逻辑漏洞,等着黑客来搞,测试什么的都有锅。

虎扑用户008224
不就是删除几个索引嘛。
如果真的是bug就没人能搞的定了????
虎扑用户104803
引用 @我爱你么么哒你爱我不 发表的:
请问老哥 国内的公司部署是人为操作的?还是就是走自动的程序 然后人看一眼没问题就可以了

大多数得人为操作,因为服务器都得人命令行去手动操作,自动化的有,写好脚本统一跑就行。但是一般不推荐全自动化,运维手动操作的话服务器上还会记录操作日志,出错了也方便追责到具体的个人。通常产品上线至少经过这三步,有的公司可能多点少点:
1.程序员本地开发环境调试,通过之后上传代码,一般称为commit或者push
2.运维更新测试环境,程序员,组长联调bug,有问题马上修改,确保万无一失
3.全面评测无问题后,产品正式上线,部署到线上环境,用户就可以使用了

火卷残云
引用 @WindowsPentest 发表的:
你们的主管呢 你们的测试呢 没测试就上生产环境的?

去年还发现了微软一个20年的bug,这也是测试的锅??

S
Splitmenfolk
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

我觉得能留个别人看不出来的bug比修bug还🐮🍺

小晶跟班
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

这得有很强的技术实力,或者非常巧妙的手法吧(纯外行,猜测),能玩到这个级别的,基本也不需要这些手段了。🐶🐶🐶🐶🐶

w
wsmhdc1
引用 @爱吃包子的鱼 发表的:
有代码规范的公司不会出这种事情,通常代码提交之后要组长和其他同事review通过,运维才会把程序或服务打包部署上服务器,基本上杜绝了绝大多数的隐藏bug。
要是三个人连着反了公司当我没说🐶

看描述,主体功能都是他设计的,大概率主程或者技术主管

A
AaronLynn
引用 @爱吃包子的鱼 发表的:
有代码规范的公司不会出这种事情,通常代码提交之后要组长和其他同事review通过,运维才会把程序或服务打包部署上服务器,基本上杜绝了绝大多数的隐藏bug。
要是三个人连着反了公司当我没说🐶

从2014年入职到2018年,公司的主要系统都由他搭建,包括公司的SAAS系统、API系统、电子合同的签署等服务。说白就是小公司卸磨杀驴…可以理解他的不满,只能说跟错了人。

虎扑用户104803
引用 @AaronLynn 发表的:
从2014年入职到2018年,公司的主要系统都由他搭建,包括公司的SAAS系统、API系统、电子合同的签署等服务。说白就是小公司卸磨杀驴…可以理解他的不满,只能说跟错了人。

只能说领导也是傻子,干到这种级别的早就该拿股票或者升合伙人的位置了,领导没想到遇到个莽夫,直接给他递归删库了

网瘾杀手杨永信
引用 @血染冰霜泪 发表的:
并不是所有的数据库操作都能找回,对应的表删了,后来的人还真可能看不出来

有备份的,数据通常放在两台不同服务器,每台服务器还有不同地址备份,想要删除根目录下所有文档还要获得root权限,其实有点难,一个人的力量估计只能删除子目录下的文件

虎扑用户104803
引用 @wsmhdc1 发表的:
看描述,主体功能都是他设计的,大概率主程或者技术主管

是的,所以领导的操作真的憨憨,这种级别的技术不做合伙人或者给他拿股票,迟早要出事

0
0x
rm -rf 不敢乱用

s
seefish
所以现在很多程序都有bug,因为在一开始程序员们就留有余地
网瘾杀手杨永信
引用 @我爱你么么哒你爱我不 发表的:
请问老哥 国内的公司部署是人为操作的?还是就是走自动的程序 然后人看一眼没问题就可以了

不管自不自动,人都得盯着。自动无非就是写个脚本替代下日常操作。只要产品上线,运维就得一直盯着,直到上线完成,没有问题才能把架在脖子上的刀放下来🐶有问题要第一时间回滚

一边打球一边脱鞋
引用 @贾明子 发表的:
删库这普通员工可没有权限,有权限的你说自己不懂删库,说不过去的

他说的是留bug而不是删库

k
kevin18
引用 @拉飚的名字 发表的:
又不是查不到你

查到又怎么样?哪个人开发从来没有bug的?你自己测试没做好赖我咯?

K
Kev.Garnett
引用 @被盗号两次 发表的:
删库太明显了
正确做法是留下BUG,
定时“维护”才能不出问题
超期没“维护”数据自动随时乱数修改。

这当事人笨就笨在,他是在事后通过远程方式修改的,留下了记录。

下回看你了🐶

绿
绿军火箭
引用 @拉飚的名字 发表的:
又不是查不到你

我就把算法写的复杂一点也能实现,但是访问量一上来自己就宕机,我在场的时候一个小时搞定,不在场的时候你一天也解决不了,你就算查到能奈我何?

绿
绿军火箭
引用 @WindowsPentest 发表的:
你们的主管呢 你们的测试呢 没测试就上生产环境的?

当时测试通过后就过了,但是生产的代码也不是不能改,想留高级一点的bug 这也与程序员水平有关系的。

绿
绿军火箭
引用 @eStar职业竞技俱乐部 发表的:
照你这么说,公司其他人都是吃干饭啥都不会的,那还做什么程序

测试还真是很多不懂代码的,你后期做手脚,根本看不出来。

西
西兰骑士
引用 @不怎么养的小草 发表的:
什么意思,大佬能解释一下吗,外行人想了解一下

简单比喻成盖房子砌墙,砌得不直,但房子暂时能用,但用一段时间就塌了。查到你就可以说手艺不精。删库跑路相当于直接把地基给挖了

科比和刘强东
引用 @纠结的腰围 发表的:
正确的做法是留BUG,只要定时维护就不出问题,一旦离职,BUG发作删库🐶

白盒测试把代码过一遍不就出来了么

我想不该用真名
离职还有数据库的权限这就是公司风控的问题了