夜已深,注意休息哦!

默认分类

昨晚接口又被日了,接口被疯狂调用的背后是人是鬼?是道德的沦丧还是人性的扭曲?

2022年10月19日 12:23:45 · 本文共 993 字阅读时间约 3分钟 · 1,394 次浏览
昨晚接口又被日了,接口被疯狂调用的背后是人是鬼?是道德的沦丧还是人性的扭曲?

昨日凌晨12点15分,手机突然亮起,邮件、短信接踵而至,网络流量报警、CPU占用报警,这背后一定隐藏着不可告人的秘密,数百条线程为何频繁断开,回调函数为何迟迟没有结果,MySQL数据库为何屡遭黑手,连环嵌套循环案,究竟是何人所为??诡异的bug背后究竟是人是鬼,传来的对象次次为空的事件又隐藏着什么?这一切的背后,是类型转换的错误,还是空指针异常?让我们一起走进程序员变态的内心世界。欢迎来到任霏的博客。

截止本文发布时,我的程序为第二代程序 renfeid 2.0,已经具有比较完备的追踪审计功能,但还没有限流功能,限流功能将在第三代 renfeid 2022 上添加,联动 WAF 防火墙进行防护。

发展过程复盘

依托我的开发经验,系统具备较为完善的审计功能,将每一次用户操作都记录了下来,形成了以下发展过程:

  • 2022-10-18 23:36:52 通过 Google 搜索来到分词工具页面
  • 2022-10-18 23:49:00 通过 Postman 7.29.2 模拟测试了4次分词接口
  • 2022-10-18 23:52:04 通过 okhttp 4.10.0 批量调用分词接口
  • 2022-10-19 00:15:31 服务器网络流量异常告警
  • 2022-10-19 00:33:21 服务器 CPU 使用率告警
  • 2022-10-19 00:40:04 结束 批量调用
  • 2022-10-19 00:48:16 通过浏览器访问了一次分词工具页面

该访客IP地址为 60.12.8.240/60.12.8.241 两个中国联通公网IP,经定位在:浙江省杭州市滨江区聚才路。

整个事件持续了48分钟,总请求次数:29.0653 万次,消耗网络流量 311.8 MB,请求峰值发生在 2022-10-19 00:14:16 这一秒中请求了 434 次,整体平均TPS:208。

每秒请求数量分布

作案动机

专门写程序来疯狂调用我的接口,动机是什么呢?我来分析分析程序员变态的内心世界。

  • 猜测一:懒,是程序员的优秀品德,有一批内容需要分词,直接搜索分词工具,来到我的网站,拿到接口,直接调用。
  • 猜测二:挑衅,程序员都看不上别人写的东西,你这么强?我来试试,你抗不扛得住,写个死循环就是干,看看你有多强。
  • 猜测三:寻仇,某些地方拒绝了我的要求,开始报复,寻找最消耗资源的地方,反复请求消耗资源,类似CC攻击。
  • 猜测四:有预谋的踩点,测测网站处理能力,准备后续的攻击规模,然后持续攻击,找站长谈判,免费挂广告或者友情链接。
  • 猜测五:闲逛,正好自己有类似开发需求,好奇来搞一波,性能表现作为我的参考。

我觉得猜测一更可能,我查看了分词内容,好像是在跑一个字典,因为是按拼音排序好的有序数据,但作为攻击踩点也是有一定可能的,那只能等我第三代 renfeid 2022 程序上线了,联动 WAF 实时封禁 IP 地址。

请求内容

损失评估

由于之前有多次被攻击的经验,我已经将付费 CDN 切换到了免费 CDN 上了,所以近 30万次的请求没有造成财产上的损失,311.8 MB 的流量大概造成 0.24元的损失,由于发生在凌晨时间,当时网站几乎没有其他用户,所以我也就没有处理。

此类处理意见

面对接口疯狂调用,最有效的就是限流,你可以统计每分钟、每小时、每天这个IP调用接口的次数,达到阈值的进行拒绝,再达到封禁阈值的直接防火墙封禁。

商业用途请联系作者获得授权。
版权声明:本文为博主「任霏」原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://www.renfei.net/posts/1003539
评论与留言

以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。

微信搜一搜:任霏博客