一个阳关灿烂的上午,在工位正在开发新功能,突然产品同事说线上视频连接文章都变成一条数据 了,然后快去登录生产环境验证问题。
一.查询生产表数据,全表变成一条数据了,紧急排查问题,发现新上的功能没有缺陷问题
二.排查新功能任务,发现没有和这条数据相关的痕迹
三.排查定时任务,根据数据分析推断,拼多多平台的定时任务有问题,由于调用拼多多平台用的原生Python,未做SQL注入拦截和占位符的预处理,出现一条SQL注入的数据,导致更新条件丢失,全表被更新成一条数据
四解决方案
1.首先紧急停掉了平台脚本,
2.根据SQL平台的存档数据,回滚到之前正常数据的时间点的备份文件
3.数据库配置层面:开启sql_safe_updates配置参数后,UPDATE语句必须使用条件才能更新。
4.代码编写层,解决掉SQL注入问题,引入参数预处理和SQL注入拦截与过滤,增加安全性校验和拦截提醒。
最终问题定位到并解决了,数据恢复正常,系统恢复访问