文档章节

FT12短网址改版说明:一次被迫的改版

q
 qiya0701
发布于 2017/09/05 21:21
字数 1228
阅读 29
收藏 0

FT12短网址上线已经六七年,期间服务了无数正常用户,也获得很多好评。FT12短网址使用了国内最稳定、快速的阿里云服务器,保障了短网址的长期可用性。另外,FT12短网址还是目前最安全的网址缩短服务提供商,其在网址安全方面,接入了腾讯电脑管家官方的恶意网址检测api,能自动过滤所有钓鱼、欺诈网址,如果你想用该短网址发一些神马艳照门的链接,或者钓鱼、菠菜网站的链接,那还是免了,因为这些网址都是不被允许且会被自动过滤的。正因为如此,FT12短网址才能长期的稳定的给用户提供最好的服务。不过在为正常用户提供优质服务的同时,我们也得罪很多非法用户。我们对非法用户生成的各种钓鱼、菠菜等非法短链接进行了拦截,净化网络。而很多非法用户在短链接被拦截后,心生怨气,对本站进行了无止尽的CC和DDOS攻击,给本站带来了很多烦恼。同时,还有一些同行,抱着投机的态度对本站进行CC和DDOS攻击。

1-150930120520N0.png FT12短网址改版说明:一次被迫的改版 短网址资讯

每一次的攻击,我们担忧的不是自己的安危,而是想着如何尽可能的保证正常用户的短链接保持稳定、快速的访问。为此,我们针对每一次的攻击进行了分析和总结,有针对性的进行优化,以提高网站的抗CC和DDOS攻击的能力。首先,从软件层面说起。FT12短网址程序基于PHP+MYSQL,为了提升效率我们将php版本从php5.4升级到了php7.0,而这种版本升级,我们却遇到了问题。php7.0不支持mysql方式连接数据库,我们花了两天时间重新编写了程序文件中数据库连接代码,将mysql连接方式改为了pdo_mysql。然后我们测试了版本升级对短网址性能的影响:编写测试代码,测试在php5.4和php7.0下短网址生成时间,结果非常出乎意料,php7.0的速度比5.4版本快了将近两倍!无论是数据连接数还是服务器CPU的占用率都明显下来了,我们对这次的升级非常的满意。

短网址程序版本的升级,对性能有了极大的提升。我们信心满满的期待着短网址在下一次的CC和DDOS攻击中的表现。时间没有让我们等太久。就在php版本升级后的第三天,DDOS和CC攻击又来了。另我们非常失望的是,短网址服务器还是挂了,虽然从之前的秒挂到现在的撑了十几分钟后再挂掉,但这对于我们来说根本没有什么区别。后来,我们又针对这次的攻击进行了分析和总结,以及请教了很多安全防御方面的专家。最终得出结论:在软件层面是无法防御CC或者DDOS攻击,只要攻击能打到php层面,所有的防御都是失败的。我们苦思冥想,终于想到了一个一劳永逸的解决方案:html静态化+接入CDN服务。首先,做了静态化后,所有的请求都再也不需要php去运行,其次,接入了CDN后,静态文件都会缓存到散布在全国各地的CDN节点上,所有的攻击都会被转嫁到CDN服务商,由于缓存测量的作用,对我们短网址服务器不会有任何直接http请求。基于此,我们花了两天时间将FT12短网址的所有用户可见页面进行重构,把原先的“.php”格式文件全部转换成了“.html”格式静态页面。

在完成短网址全站静态化后的第二天,更大规模的攻击又来了。查询了阿里云CDN的访问日志,这一次的攻击尽然有一千过个恶意ip,发起了超过10G以上规模的DDOS攻击。经过CDN供应商的清洗后,带宽流量占用下降到了20M/S,然后这20M/S的http请求,最终到达我的短网址服务器的就只有200K/S了。如果不是特意留意阿里云CDN后台数据,我们很可能连攻击来过也不知道,这次的攻击,短网址服务器这边cpu、内存以及带宽基本上纹丝不动,对正常用户的影响也基本上等于零,一次非常完美的防御!

© 著作权归作者所有

共有 人打赏支持
q
粉丝 0
博文 14
码字总数 12467
作品 0
私信 提问
微信公众平台回复链接可以直接访问,但不能是锚文字链接标签

  最近在学习微信公众平台开发,由于编辑模式和开发模式不可同时开启,在开发模式下如果访客发送关键字过来暂时无法实现关键词自动回复,客服人员先用链接网址直接回复订阅用户,但请注意不...

ytkahcom
2014/03/27
0
0
企业网站改版一般大概费用需要多少钱?公司官网改版注意什么问题和哪些事项?

互联网行业如今已经发展好些年了,越来越多的中小企业官网也已建设多年,随着互联网+的发展,早几年前的公司网站已经远远不能满足现在互联网用户的需求和体验,不能很好的宣传企业在网上的品...

wqyxsj
05/28
0
0
Team 团队协作平台更新,任务管理全面改版

昨晚我们对 Team 团队协作平台做了一次全面更新,此次更新主要是优化使用体验,完善现有功能。 此次更新内容主要包括: Team 页面结构和操作方式进行全面重构,整体性能有较大提升 任务管理模...

oschina
2014/12/11
12.4K
76
读书公园的四个版本

今天下午,我对读书公园的页面又做了一些修改。然后就想到,在不知不觉间,这居然已经是网站的第四个版本了。它的面貌变化真是太大了。 下面,大家就跟着我的记忆,来依次回顾吧。 首先,必须...

阮一峰
2004/10/31
0
0
51CTO博客改版日记(目录) 2006年 by小废

每次翻来看,都想:是我写的啊?嗯,写得真好~(此处应有嘘声) 十年之后,博客又迎来了新一次的改版,谨以此文,辞旧迎新。 ·[原创] 博客改版日记(9.1)——喜新厌旧的情绪高涨 2006-09-01...

小废物
06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

小白带你认识netty(三)之NioEventLoop的线程(或者reactor线程)启动(一)

在第一章中,我们看关于NioEventLoopGroup的初始化,我们知道了NioEventLoopGroup对象中有一组EventLoop数组,并且数组中的每个EventLoop对象都对应一个线程FastThreadLocalThread,那么这个...

天空小小
今天
3
0
PHP动态扩展Redis模块

查看已有模块 [root@test-a ~]# /usr/local/php/bin/php -m[PHP Modules]bz2Core...zlib[Zend Modules] 下载包,解压,生成configure文件 [root@test-a ~]# cd /usr/local/src/[ro......

野雪球
今天
3
0
在Ignite中使用线性回归算法

在本系列前面的文章中,简单介绍了一下Ignite的机器学习网格,下面会趁热打铁,结合一些示例,深入介绍Ignite支持的一些机器学习算法。 如果要找合适的数据集,会发现可用的有很多,但是对于...

李玉珏
今天
5
0
Mybatis应用学习——简单使用示例

1. 传统JDBC程序中存在的问题 1. 一个简单的JDBC程序示例: public class JDBCDemo {public static void main(String[] args) {Connection con=null;PreparedStatement statemen...

江左煤郎
今天
4
0
使用JavaScript编写iOS应用业务逻辑

JSAUIKitCocoa使你可以使用JavaScript编写对性能要求不高但可能变动性很大的iOS应用的业务逻辑部分,View组件、需要多线程支持的Model等则直接使用原生对象。 编写方式与React Native相似,但...

neal01
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部