空格导致的论坛数据库宕机事件

简介:

(1)情景再现:

    客服产品中心接到用户反馈的问题:网络正常,但是网页无法加载,网站首页可以登录,公司开发的论坛APP也是这种情况,用户问答模块数据无法加载。由于是初创公司,产品去年刚刚上线,以为是数据库的Bug,进行测试之后并不是数据库的问题,可以排除。由开发人员检查功能代码发现并不存在逻辑问题。次日,监控报警显示数据库磁盘使用率高达98%。同时通知运维人员进行数据的热迁移和磁盘的扩容,问题得以暂时的缓解,监控显示磁盘数据增量基本保持不变数据持续增长。尤其是在中午或者是傍晚,数据库服务器负载明显偏高,经过一天的技术排查仍未发现问题。查看网站Web服务器的日志发现不同的IP地址访问该论坛网站的时间间隔是呈现一致的规律性,但是间隔的时间并不是一样,怀疑友商攻击。由于Web服务器的负载均衡,并没有感觉到Web服务器的负载出现问题,也正是负载均衡屏蔽了这个隐蔽的事件。同时监控系统的设计也没有精准统计IP地址的访问时间间隔数据,只是统计访问时段的数据。这为解决问题进一步提供了线索,我们把问题放在用户提交的数据上,把数据库的数据导出发现,用户问答模块存入的数据超过70%都是空白,由此可以确定是攻击者在不同间隔的时间使用程序持续提交空白的问题,并使用空格或者是特殊字符进行回答导致数据库磁盘爆满,给用户留下登录正常,就是看不到数据的假象,其实服务器返回的数据正是攻击者提交的空格。


(2)问题解决:

    开发人员在代码中实现特殊字符和空格字符的判断,并且不允许同一用户在同一时间发送多个问题。

    运维人员做好数据库存储的弹性伸缩存储,并过滤频繁访网站的IP地址。

    监控程序增加同一IP地址登录发文时间间隔的数据收集和统计。



 本文转自 棋帅小七 51CTO博客,原文链接:http://blog.51cto.com/xvjunjie/2055817

相关文章
|
2月前
|
存储 数据库
Navicate 如何导出数据库中的存储过程、事件、视图等?
Navicate 如何导出数据库中的存储过程、事件、视图等?
|
6月前
|
SQL 运维 关系型数据库
在OceanBase数据库中,你可以通过以下几个途径来查看慢SQL和等待事件
在OceanBase数据库中,你可以通过以下几个途径来查看慢SQL和等待事件
208 1
|
SQL 监控 Oracle
Oracle 数据库发生等待事件:enq: TX - row lock contention ,排查思路
Oracle 数据库发生等待事件:enq: TX - row lock contention ,排查思路
Oracle 数据库发生等待事件:enq: TX - row lock contention ,排查思路
|
2月前
|
SQL 安全 Devops
一个简单的代码拼写错误导致17个生产数据库被删!微软Azure DevOps宕机10小时始末
一个简单的代码拼写错误导致17个生产数据库被删!微软Azure DevOps宕机10小时始末
21 0
|
3月前
|
消息中间件 Java 数据库
面试题:如何保证三个数据库之间的数据一致性,如服务突然宕机
面试题:如何保证三个数据库之间的数据一致性,如服务突然宕机
30 0
|
3月前
|
SQL 监控 关系型数据库
解密SQL性能异常事件及阿里云数据库的性能调优实践
作为开发者想必都知道数据库是现代应用的核心组件之一,而且在当今互联网时代之下,SQL查询的性能直接影响系统的整体性能,它的性能对于系统的稳定性和响应速度至关重要。那么本文就来讨论一下SQL性能异常的排查和优化方法,包括我个人印象深刻的SQL性能异常事件,以及分享一下使用阿里云数据库产品/工具进行SQL性能调优的经验和心得体会。
84 1
解密SQL性能异常事件及阿里云数据库的性能调优实践
|
3月前
|
前端开发 JavaScript Java
基于spring+jsp+mysql实现的Java web论坛系统【源码+数据库+指导运行】
基于spring+jsp+mysql实现的Java web论坛系统【源码+数据库+指导运行】
|
4月前
|
数据库 流计算
Flink CDC的工作原理是通过监听数据库的变更事件
Flink CDC的工作原理是通过监听数据库的变更事件
56 1
|
4月前
|
存储 关系型数据库 MySQL
认识MySQL数据库中的事件
认识MySQL数据库中的事件。
45 4
|
5月前
|
BI
利用 ALV 实现增删改查系列之四:如何捕捉 SAP ABAP ALV 报表行项目删除时抛出的事件试读版
利用 ALV 实现增删改查系列之四:如何捕捉 SAP ABAP ALV 报表行项目删除时抛出的事件试读版
47 0