昨晚接口又被日了,接口被疯狂调用的背后是人是鬼?是道德的沦丧还是人性的扭曲?
2022年10月19日 12:23:45 · 本文共 993 字阅读时间约 3分钟 · 1,949 次浏览昨日凌晨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://blog.renfei.net/posts/1003539
相关推荐
猜你还喜欢这些内容,不妨试试阅读一下以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。
- 前后端分离项目接口数据加密的秘钥交换逻辑(RSA、AES)
- OmniGraffle 激活/破解 密钥/密匙/Key/License
- Parallels Desktop For Mac 16.0.1.48911 破解版 [TNT]
- Redis 未授权访问漏洞分析 cleanfda 脚本复现漏洞挖矿
- CleanMyMac X 破解版 [TNT] 4.6.0
- OmniPlan 激活/破解 密钥/密匙/Key/License
- 人大金仓 KingbaseES V8 R3 安装包、驱动包和 License 下载地址
- Sound Control 破解版 2.4.2
- Parallels Desktop For Mac 15.1.4.47270 破解版 [TNT]
- Parallels Desktop For Mac 16.0.0.48916 破解版 [TNT]
- 博客完全迁移上阿里云,我所使用的阿里云架构
- 微软确认Windows 10存在bug 部分电脑升级后被冻结
- 大佬们在说的AQS,到底啥是个AQS(AbstractQueuedSynchronizer)同步队列
- 比特币(BTC)钱包客户端区块链数据同步慢,区块链数据离线下载
- Java中说的CAS(compare and swap)是个啥
- 小心免费主题!那些WordPress主题后门,一招拥有管理员权限
- 强烈谴责[wamae.win]恶意反向代理我站并篡改我站网页
- 讨论下Java中的volatile和JMM(Java Memory Model)Java内存模型
- 新版个人网站 NEILREN4J 上线并开源程序源码
- 我站近期遭受到恶意不友好访问攻击公告