[喔趣]一晚上被刷了3000多元
共 2353字,需浏览 5分钟
·
2024-04-11 10:34
大家好,我是程序员渔夫。
最近一直在快速迭代我的小程序,每天看到用户数蹭蹭地往上涨,难免还是有点小激动的,破万应该不远了。
心情是激动了,但随之而来的,有些羊毛党开始搞一些骚操作了。
我是怎么发现的呢?
为了实时了解全站接口被调用的情况,我写了一个push接口,每隔一段时间就会把当日全站的每个接口的使用次数推送给自己,然后我查看邮件即可获知。
由于每天push邮件太多了,没有及时看到,直到2月29日晚上临睡前看了一下,才发现已经被刷了3000次。
然后我查看了数据库,果然全是同一个IP, 我当时开发小程序的时候,为了方便把调用接口的AK放到了小程序代码里面,我猜想应该有人去把小程序反编译,拿到了源码,所以拿到AK,直接就用这个AK开始不停请求接口了。
然后我立即修复,更新了AK,重新封装了一层,把AK放置到后端服务器上,这样即使反编译,拿到源码也没用。
接下来我就开始观察,过了几天,数据又开始异常了,又来一大波重复请求,而且都请求成功了,然后我开始复盘,想到应该是CSRF攻击,由于用户体验和前端是小程序,所以就没有设置随机token,也没有添加验证码,导致可以有人在小程序端直接抓包获取到请求包后,捕获详细请求内容,然后通过脚本直接请求,绕过了小程序的限制。
虽然我之前在后端对referer和UA做了限制,也清楚这2个都是可以被伪造的,但确实没想到这么快就被盯上了。
我急忙开始调研如何在小程序里面使用验证码来限制重复请求,之前都是去爬别人的接口,今天终于被“报应”了。
然后我就找到一款支持小程序的滑动识别工具,具体厂商和接入细节就不方便讲了,可以加我私聊,然后对接到小程序后,测试完毕,今天上午才发了一个fix版本,终于算是比较安全了。
在滑动验证之后,会带上一个ticket到后端进行验证,验证不通过是不会去请求真实的后端接口的。
想到自己就是搞安全的,结果还是时不时被其他人搞一下,真是汗颜。
复盘一下
1.有价值的东西,不管你的规模大小,早晚会被盯上。
2.不要心存侥幸,该做的基础防护还是要有,开局不要裸奔,好歹配穿件衣服。
3.监控很重要,另外优化监控告警也很重要,不然有效信息容易湮没
4.调研/修复要及时,如果早一点发现,早一点补充短板,损失就少些
损失总计
总共被恶意请求消耗8000多次,按每次1元来说,差不多8000多元。
再说一点,现在很多小程序安全意识很低,很多查询,也基本没有防护,只要反编译或者抓包,就能获取请求的详细内容。
如果对大家有帮助,欢迎 点赞, 收藏,转发 支持。欢迎跟我一起讨论,独立开发者如何给自研产品进行安全防护。
往期推荐