凌晨两点,我正在睡梦之中,此时电话忽然想起,在漆黑的深夜中显得格外刺耳。

这个时间点电话响了肯定没好事,因为我的手机在夜间模式下,除非被同一个电话号码打三次,否则是静音,因此电话那边的人肯定有急事找我。我心一下子紧绷,睡意全无。

来电的是一个陌生的号码

“喂”我接通电话

“是xxx吗”电话那头是一个妹子的声音,说话声音有点快, 显得很急切

“是我,你是哪位,有什么事吗” 我说

“我是公司客服部的同事,是这样的,有用户反映我们的网站的文章评论内容被注入了大量的非法广告,我们查到这块功能是你负责的,所以直接联系你,希望你能尽快处理下”妹子回答

评论系统刚刚升级过,难道出BUG了,我心里一突

“好的,我马上看一下,处理好了给你回复”

挂掉电话,起身穿上衣服,打开电脑,打开网站,随便点开一篇首页的热文,下拉到评论处,果然评论里有大量链接内容,里面都是一些不堪入目的内容。 点开另一篇文章,评论处也是如此。

这可是对公司口碑有影响的事故,我吓出一身冷汗,必须赶紧处理。

我远程连接到网站的数据库服务器,select 了评论表,并做了筛选,发现非法评论记录有几十万之多,而且还在不断增长。而问题的原因显然是提交评论的接口被攻击了,但是因为编码是考虑欠周,没有检测这种特殊情况,提交的非法数据被不断的写入至数据库。

要解决这个问题,必须要修改代码,判断提交的内容合法性和提交频率。这需要重新发布版本,况且我家里也没有代码,想改也改不了,而这个问题又必须要尽快处理,这可如何是好。

凌晨两点很凉快,我却急得浑身发热,背心直冒汗。

“没办法了,只能先把已存在的非法评论删除再说”

我用root账户登录数据库,设置了一个筛选出这些非法评论的where条件,这个条件很容易指定, 因为这些评论都长一个样子,然后执行delete语句,几秒钟后,这些非法评论都被删除。

可是原有的评论虽然被删除,新的评论还在不断的写入, 不一会,评论数量又达到几千。

“这样删除永远删不光啊,这可怎么办”我急得抓耳挠腮“这要是不能马上解决, 明天肯定要挨批了,可这个问题根本没有办法马上解决啊,现在连代码都没有。难道让我现在去公司吗”

忽然,我脑袋里灵光一闪,想到了一个解决方案。

我可以在评论表上加一个insert触发器,在触发器中对评论内容进行检测,如果插入的内容是非法评论,则回滚这次操作,这样表中就不会再被写入非法数据了。

按照这个思路说做就做,我建立完触发器,删掉表里的非法评论,过了一会,再次检测发现非法评论未再次出现。

“方案生效了”我舒了口气

然而这只是个临时解决方案,假如对方改了评论内容的格式,那这个触发器就会失效。与此同时,触发器会对数据库性能造成影响,完善的解决方案还是应该通过程序处理,不过应急处理下问题不大,等挨到天亮就去改程序。

“喂,问题我修复了,你们看下”我拨通了刚才打给我的客服妹子的电话

“好的,大半夜的处理问题,真是辛苦你了”妹子客套了一下

“没有,这本来就是我的锅,是我给你们带来麻烦了”我说 “对了,你们持续观测下,如果再有这种情况,立马打电话给我,我刚才只是临时处理下,真正修复问题还要去公司”

“好的,我们知道”客服妹子甜甜的回答

挂掉电环, 我睡意全无,静静的等天亮,去公司彻底解决这个漏洞。

网站出现bug,我深夜被叫醒处理,用一个触发器解决了问题的更多相关文章

  1. 深夜,用canvas画一个时钟

    深夜,用canvas画一个时钟 查看demo 这几天准备阿里巴巴的笔试,可以说已经是心力交瘁,自从阿里和蘑菇街的内推被刷掉之后,开始越来越怀疑起自己的能力来,虽然这点打击应该是微不足道的.毕竟校招在刚 ...

  2. css---移动端网站专属BUG【苹果手机】

    最近在前端写页面的时候,遇到了三个苹果手机的专属BUG,记录下... BUG1:苹果手机 form 表单的input有阴影 解决方法: input { /* 1 */ overflow: visibl ...

  3. 大流量网站性能优化:一步一步打造一个适合自己的BigRender插件

    BigRender 当一个网站越来越庞大,加载速度越来越慢的时候,开发者们不得不对其进行优化,谁愿意访问一个需要等待 10 秒,20 秒才能出现的网页呢? 常见的也是相对简单易行的一个优化方案是 图片 ...

  4. 火狐无法访问本机IIS部署的网站,弹出:此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求 的解决办法

    关于火狐浏览器访问本机IIS部署的网站弹出“此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求”这个错误(错误截图如下): 解决方法如下: 1.打开火狐浏览器, ...

  5. Python+Selenuim测试网站,只能打开Firefox浏览器却不能打开网页的解决方法

    最开始我使用的Selenium版本为2.48,Firefox版本为37,自动化打开网站的时候,可以正常打开. 后来由于Firefox的自检测更新,版本更新为47,导致版本不兼容,自动化打开网站浏览器时 ...

  6. 【知识整理】惊现RecyclerView内部Bug???别急,我们慢慢解决它~

    一.写在前面 这也是久违的一整个月没有写Blog,也是由于近期给妹纸找工作,各种坑蒙拐骗,然而都没卵用.额,广大朋友们,成都需要软件测试.线上运维.产品助理的伙伴,赶紧私聊我了.这妹纸,学习能力挺好, ...

  7. IIS网站本机可以访问但局域网其他机器无法访问 解决方法

    在IIS部署网站的时候,发现只有本机可以访问,通过localhost和IP地址都可以,但是当局域网其他机器访问我的网站的时候,无响应. 我的是WIN10的系统 解决方法:   网站所对应的端口必须对外 ...

  8. IE6浏览器有哪些常见的bug,缺陷或者与标准不一致的地方,如何解决

    IE6不支持min-height,解决办法使用css hack: .target { min-height: 100px; height: auto !important; height: 100px ...

  9. 微信h5支付“网站域名ICP备案主体与商户号主体不一致”的解决方法,H5微信支付 授权函下载

    如下图所示: 微信h5支付“网站域名ICP备案主体与商户号主体不一致”: 需提交H5微信支付 授权函 下载地址:https://download.csdn.net/download/a72400815 ...

随机推荐

  1. MIT线性代数:3.矩阵相乘

  2. MySQL批量插入的分析以及注意事项

    目录 1.背景 2.两种方式对比 2.1.一次插入一条数据 2.2.一次插入多条数据 3.拓展一下 4.Other 1.背景 我们在工作中基本都会碰到批量插入数据到DB的情况,这个时候我们就需要根据不 ...

  3. Parted 创建 GPT 分区

    对于磁盘的分区表 MBR与GPT区别. MBR:MBR分区表(即主引导记录)大家都很熟悉,是过去我们使用windows时常用的. 所支持的最大卷:2T,而且对分区有限制:最多4个主分区或3个主分区加一 ...

  4. CHRONY 时间服务器

    时间同步服务chrony ntp network time Protocol之前使用的同步协议 chrony ntp协议的实现,兼容网络中的ntp服务(centos7之后就不再使用ntp,转而使用ch ...

  5. 震惊!我竟然发现了JDK源码的问题

    读源码时的思考 最近在看concurrent包下线程池的源码,当我看到ThreadPoolExecutor类的时候,发现了JDK源码的一个问题.以下是ThreadPoolExecutor类的addWo ...

  6. Project Euler 54: Poker hands

    在纸牌游戏中,一手包含五张牌并且每一手都有自己的排序,从低到高的顺序如下: 大牌:牌面数字最大 一对:两张牌有同样的数字 两对:两个不同的一对 三条:三张牌有同样的数字 顺子:所有五张牌的数字是连续的 ...

  7. xms跨平台基础框架 - 基于.netcore

    背景 敝人经过多年开发,数百个项目“打磨(折磨)”,各种国内外框架平台都有涉及,没有一款称心顺手的,原因有三,一是设计反人类,二是不开源根本无法突破框架限制,三是即使开源也是阉割版,然后xms就开始萌 ...

  8. 开源跳板机(堡垒机)系统 Jumpserver安装教程(带图文)

    环境 系统: CentOS 7 IP: 192.168.244.144 关闭 selinux 和防火墙 # CentOS 7 $ setenforce 0 # 可以设置配置文件永久关闭 $ syste ...

  9. DNS服务反向解析及过程中一些小问题解决

    在此需要了解一下,反向解析的作用是根据IP地址查找到对应的主机名(域名),在区域文件(named.rfc1912.zones)中默认已存在一些注释内容与区域信息,可不需要删除上面实验及默认区域信息,直 ...

  10. Apache安装问题:APR not found

    资料来源:Apache遇到的问题:APR not found 安装apache时出现arp错误问题 按照以上文章试验之后整理如下: #./configure --prefix……检查编辑环境时出现: ...