一次惊心动魄的文件删除

简介: 今日在博客园看到了关于“印象最深的一个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字。也不知道我这够不够。

相关文章
|
4月前
|
搜索推荐
感谢wps备份功能 救了我一命
感谢wps备份功能 救了我一命
41 0
|
存储 Linux
翻车!误删/usr/lib/引发的血案,从棺材边成功抢救的过程分享。
翻车!误删/usr/lib/引发的血案,从棺材边成功抢救的过程分享。
|
安全 Windows
Win系统 - 更新后,竟有这么“严重”的后果?
Win系统 - 更新后,竟有这么“严重”的后果?
146 0
Win系统 - 更新后,竟有这么“严重”的后果?
|
网络协议 Linux
可恶,又被小林装到了!
可恶,又被小林装到了!
可恶,又被小林装到了!
|
JSON 负载均衡 网络协议
小林带你盘一盘,常用的网络命令
Linux 为我们提供了很多网络相关的命令,我们这次就来看看 Linux 系统里有哪些常用的网络命令。
小林带你盘一盘,常用的网络命令
|
程序员 Linux Shell
教你三招快速文件批量重命名方法
教你三招快速文件批量重命名方法
1278 0
|
Java
连文件搜索都不会用,也不自己反省一下?
连文件搜索都不会用,也不自己反省一下?
90 0
|
运维 分布式计算 Hadoop
误删文件的经验之谈
一、引言   曾经在运维hadoop集群的时候,出过这么一回事:当时集群因为需要维修机器所以进行停机维护,但是当启动集群的时候发现集群怎么也起不了,在没有问别的同事的情况下,自己百度了一下问题,发现format操作能解决问题,当时的我对于format是一知半解,后来执行format以后集群是起来了,但是数据没有了。追悔莫及已经没有用了,只能对自己说吃一见长一智;这明显就是误操作导致数据被删。今天就来聊一下怎么能防止误删文件! 二、防止误删数据技巧:   1、修改或删除数据前请务必备份,最好有异机备份,修改配置等先提交版本管理系统在发布到线上环境。   2、可以使用mv命令替代rm命令,
127 0