PHP代码中一次SQL注入引发的线上事故

一个阳关灿烂的上午,在工位正在开发新功能,突然产品同事说线上视频连接文章都变成一条数据 了,然后快去登录生产环境验证问题。

一.查询生产表数据,全表变成一条数据了,紧急排查问题,发现新上的功能没有缺陷问题PHP代码中一次SQL注入引发的线上事故_第1张图片

二.排查新功能任务,发现没有和这条数据相关的痕迹

PHP代码中一次SQL注入引发的线上事故_第2张图片

三.排查定时任务,根据数据分析推断,拼多多平台的定时任务有问题,由于调用拼多多平台用的原生Python,未做SQL注入拦截和占位符的预处理,出现一条SQL注入的数据,导致更新条件丢失,全表被更新成一条数据

PHP代码中一次SQL注入引发的线上事故_第3张图片

四解决方案

1.首先紧急停掉了平台脚本,

2.根据SQL平台的存档数据,回滚到之前正常数据的时间点的备份文件

3.数据库配置层面:开启sql_safe_updates配置参数后,UPDATE语句必须使用条件才能更新。PHP代码中一次SQL注入引发的线上事故_第4张图片

4.代码编写层,解决掉SQL注入问题,引入参数预处理和SQL注入拦截与过滤,增加安全性校验和拦截提醒。

最终问题定位到并解决了,数据恢复正常,系统恢复访问

你可能感兴趣的:(sql,数据库)