一次惊心动魄的文件删除

简介: 今日在博客园看到了关于“印象最深的一个bug”的活动。回想起了从业早期的一个记忆犹新的BUG处理经历。

今日在博客园看到了关于“印象最深的一个bug”的活动。回想起了从业早期的一个记忆犹新的BUG处理经历。


那时自己和朋友建了一个移动端小工具的创业项目。后端使用的PHP,已经积累了一些付费用户。一天部分客户反应,他们在APP中生成的预览图形打不开了。


于是我开始排查这个问题。好家伙,何止这个用户的预览图不见了,所有用户的预览图都没了。我慌的一头汗。


由于迭代比较频繁,首先想到的是,是不是在发布产品时候误删除了资源。是不是服务器被黑了。


焦虑的对几种分析验证后,发现,都不是。直到我回到代码中,发现了这么一段:

public function delFile($file)
    {
            $url = "/mypath/" . $file;
            unlink($url);
    }


这个函数当file传空字符串会发生什么呢。

问题就在这里。会把整个mypath文件夹下的文件都删除了。

查询日志发现果然如此。

于是我给file加了非空断言。恢复用户的预览图片。


现在回忆起来,虽然这是一个低级的错误。但是仍然具有某种普遍性。

我给它总结为,使用条件删除资源时的范围风险。


比如下面这段spring boot 代码:

apiSensorConfigMapper.delete(new QueryWrapper<ApiSensorConfigEntity>()
.eq("sensor_mac_addr", mac));


当mac为空时候会发生什么呢。即使它不会删库,是不是也会觉得很危险。

好嘛,这种情况我必须加非空断言!


小小分享希望对大家有用。


吐槽一下活动要求要写500字。也不知道我这够不够。

相关文章
|
运维 Kubernetes 文件存储
我差点重做整个K8S集群
我差点重做整个K8S集群
|
运维 前端开发 JavaScript
删库跑路后的现场还原
遭遇删库跑路怎么办?可观测性是研发质量和产品的试金石,是企业城墙的基石,这里拿删库跑路举一个栗子,说明可观测性的重要程度,用好可观测性,能更了解系统,扩宽业务。
210 0
|
存储 Linux
翻车!误删/usr/lib/引发的血案,从棺材边成功抢救的过程分享。
翻车!误删/usr/lib/引发的血案,从棺材边成功抢救的过程分享。
|
程序员
GetMemory 改错
GetMemory 改错
75 0
|
安全 Windows
Win系统 - 更新后,竟有这么“严重”的后果?
Win系统 - 更新后,竟有这么“严重”的后果?
184 0
Win系统 - 更新后,竟有这么“严重”的后果?
|
SQL 存储 关系型数据库
面试高频:为什么数据删了,表空间不变呢?
大家好前面我们大概了解了为什么MySQL在查询数据的时候,有些时候会 &quot;抖&quot; 一下。以及分析了刷脏页的策略问题以及连坐机制。今天介绍一下为什么delete from表名,表的大小还是没有变小!
面试高频:为什么数据删了,表空间不变呢?
|
关系型数据库 MySQL 数据库
一招教你防止删库跑路!!
一招教你防止删库跑路!!
306 0
一招教你防止删库跑路!!
|
运维 分布式计算 Hadoop
误删文件的经验之谈
一、引言   曾经在运维hadoop集群的时候,出过这么一回事:当时集群因为需要维修机器所以进行停机维护,但是当启动集群的时候发现集群怎么也起不了,在没有问别的同事的情况下,自己百度了一下问题,发现format操作能解决问题,当时的我对于format是一知半解,后来执行format以后集群是起来了,但是数据没有了。追悔莫及已经没有用了,只能对自己说吃一见长一智;这明显就是误操作导致数据被删。今天就来聊一下怎么能防止误删文件! 二、防止误删数据技巧:   1、修改或删除数据前请务必备份,最好有异机备份,修改配置等先提交版本管理系统在发布到线上环境。   2、可以使用mv命令替代rm命令,
141 0
|
安全 数据安全/隐私保护
WannaCry感染文件恢复方法,企业再也不用愁了!
WannaCry感染文件恢复方法,已经感染的电脑文件要如何恢复?我们发现代码中充满了错误,受害者能够利用一些简单命令就恢复文件,企业再也不用愁了!
7686 0
|
安全 数据安全/隐私保护
StalinLocker:一款会在十分钟之后删除文件和数据的勒索软件
如果你的电脑屏幕上出现了以下界面,千万不要以为是一款什么游戏的广告。 这是Canthink网络安全攻防实验室新发现的一个名为“StalinLocker (斯大林锁屏者)”或“StalinScreamer (斯大林尖叫者) ”的勒索软件。
1685 0