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

昨日凌晨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 版权协议,转载请附上原文出处链接及本声明。
相关推荐
猜你还喜欢这些内容,不妨试试阅读一下评论与留言
以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。微信订阅号
扫码关注「任霏博客」微信订阅号- 大佬 引入jar包那里的 driver class 怎么选的?
- 我也遇到了这个问题,已经解决了,在此分享一下 1、宿主机也要创建kingbase的用户和用户组,并且要查看一下用户和用户组的ID(这个很重要) 2、把data目录的用户和用户组设置为kingbase 3、先不要把data路径挂载到宿主机上,这时就可以正常启动,启动后进入容器,查看一下容器内的kingbase的用户和用户组ID是多少,和第一步的ID是否一致,如果ID一致,那正常挂载目录就行;如果ID不一致,那就需要修改Dockerfile文件,在构建镜像时,修改容器内的用户和用户组ID,必须和宿主机的保持一致。然后重新构建镜像,就可以正常挂载宿主机目录了 4、其实直接修改宿主机的用户和用户组ID也是可以的,但是容器内的ID一般是1000,但是宿主机的这个ID很可能已经被占用了,无法修改,就只能修改容器内的ID
- 接口已经允许跨域请求,也就是说你可以在你的页面上调用,获取用户的公网 IP。 如果你还需要其他需求,可以提交 Issue 给我。
- V008R003C002B0320 这个对应的jdbc链接驱动你在哪里找到的?我也遇到了这个问题。
- WARNING: max_connections should be less than orequal than 10 (restricted by license) HINT: the value of max_connect is set 10 WARNING: max_connections should be less than orequal than 10 (restricted by license) HINT: the value of max_connect is set 10 kingbase: superuser_reserved_connections must be less than max_connections 我按照文档修改了以后,不知道如何重启。
- 然后把数字都改成 1 再启动。 如何重新启动?
- ksql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.KINGBASE.54321"
- 进入容器查看一下日志,是不是启动失败了,日志文件在:/opt/kingbase/logfile
- ksql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.KINGBASE.54321"?
- 先通过 docker exec -it 容器名/id /bin/bash 进入容器,然后在容器中使用 ksql 客户端进行连接数据库:/opt/kingbase/Server/bin/ksql -U system test
- 免费.ml域名10年委托合同到期被马里共和国收回域名经营权
- 从极狐Gitlab看各种中间件技术选型
- 时隔十年首次收到 Google AdSense 的付款
- ga域名被加蓬共和国从Freenom公司手中收回域名经营权
- Freenom 被 Meta(Facebook) 起诉导致暂停 .tk/.ga/.ml/.cf/.gq 等新域名注册
- 生花妙笔信手来 – 基于 Amazon SageMaker 使用 Grounded-SAM 加速电商广告素材生成 [1]
- github.renfei.net 不再完整代理 Github 页面改为代理指定文件
- 优雅的源代码管理(三):本地优雅的使用 Git Rebase 变基
- 优雅的源代码管理(二):Git 的工作原理
- 优雅的源代码管理(一):版本控制系统 VCS(Version Control System)与软件配置管理 SCM(Software Configuration Management)