短信登录接口被人刷怎么办呢?

2015-10-15 14:46:57 +08:00
 xi_lin

已经做了针对 IP 和手机号的 rate limit ,但是架不住多 IP 多手机号的刷,除了进一步的限制频率外有什么好办法吗?

其实我还很奇怪为什么没有用户来投诉收到垃圾短信。。

5596 次点击
所在节点    问与答
23 条回复
avichen
2015-10-15 15:13:15 +08:00
1.昨天不是有过一样的问题了嘛?见: http://www.v2ex.com/t/227899#reply25
2.估计人家手机都被轰炸得开不了机了
kendetrics
2015-10-15 15:25:58 +08:00
图形验证码

要是算法能力够变态可以前端加密,像某宝一样用 JS 加密鼠标轨迹一起发到后端来判断是不是爬虫,除非攻击者也耐着性子啃完你的加密代码然后在爬虫里模拟,这会极大增加他的攻击成本,而且还不影响用户体验
hicdn
2015-10-15 15:26:03 +08:00
淘宝短信验证码代收
paradoxs
2015-10-15 15:34:57 +08:00
只能加密。 让别人看不到借口
ihacku
2015-10-15 17:17:06 +08:00
你看看那些手机号是不是都打不通?提示号码已过期之类?
gbooks
2015-10-15 21:39:34 +08:00
加密在前端都能看到!加个急速验证类型的滑动验证可以难倒一大片了,然后加个 ip 限制
xi_lin
2015-10-15 23:20:14 +08:00
@avichen @kendetrics @gbooks app 的老版本在用和网页一样的接口,不好加验证码。。
xi_lin
2015-10-15 23:20:38 +08:00
@kendetrics 移动端做不了这种加密吧?
xi_lin
2015-10-15 23:21:12 +08:00
@paradoxs 总有前端暴露在外,模拟一下表单提交的话接口加密没什么意义吧?
xi_lin
2015-10-15 23:21:30 +08:00
@ihacku 这倒没有试,不过看了归属地是天南海北
kendetrics
2015-10-15 23:30:24 +08:00
@xi_lin 你可以写自己的 JS 加密规则呗, JS 移动基本也都支持的啊。。
前端加密暴露是肯定会暴露的,但只要算法够复杂,就可以让他写爬虫的成本尽可能的高。几页长没注释的加密函数算出来的 token ,要用他写爬虫的语言去重新实现,这个能要命的

APP 你可以加个&type=app 让接口和网页分开兼容,然后在程序内算个 token 附上,在服务端验证,算法不泄密的话爬虫就没法模拟请求。然后网页那边简单的加个验证码就好
crab
2015-10-15 23:35:21 +08:00
加验证码吧。

另外你说已经做了针对 IP 和手机号的 rate limit

已经做了这些了,那就不算被刷了吧。多数网站的手机接口不也都是这样吗。有的连 IP 都没限制只限制手机号码 1 天或者 1 小时内最多几次。
xi_lin
2015-10-15 23:43:54 +08:00
@kendetrics 新版本 app 可以用这个加密思路做,但是老版本的 app 也得保证能用,这样的话在覆盖率足够高之前没办法启用吧?
xi_lin
2015-10-15 23:44:45 +08:00
@crab 我原来也觉得 rate limit 够用。可是看了 log 发现它根本是在随机生成手机号在刷接口。。
randyzhao
2015-10-15 23:52:55 +08:00
IP 限制怎么做的, 我们是短时间频繁调用发短信接口的话就直接 ban 掉 24 小时(不管你手机号是啥

2 天就消停了.
kendetrics
2015-10-16 00:01:13 +08:00
@xi_lin 老 APP 用 HTTP 头区分一下吧。。你查一下攻击者发送的请求,如果他模拟的网页操作,很可能会附加上一些浏览器特有的头便于伪装,你可以对于有多余项(比如 UA 之类的)的直接不响应,或者你客户端有什么独特的特征能区分出来更好。。新客户端和网页端全部加密,把老版本留出来作为类似白名单的的存在。

他不一定能想到在你网页开始加密之后,还能抓老手机端的包来模拟,就算下载了客户端,如果下的是新版的会发现还是加密了的。然后你等旧版用户量少到一个程度,就强制他们迁移新版。

当然最坏的打算是这货真又去抓了旧版客户端的包,然后你又不能承受这样下去的损失,那就只能强制旧版用户迁移了。

。。你要连在登陆失败的时候显示一个“请升级最新版”的接口都没留,那就是真的 GG 了
avichen
2015-10-16 11:22:56 +08:00
@xi_lin 加验证码和哪个应用在用接口没关系的呀,你在调用接口的 UI 之前加一步先输入页面验证码,通过后再调用短信接口发送短信
xi_lin
2015-10-16 14:21:50 +08:00
@randyzhao IP 限制放的比较宽,现在的限制是手机号和 IP 作为 KEY 同时到达一定次数后才 ban 掉 24 小时。 IP 如果限的太小的话像公司里所有人用同一个出口 IP 不是很快就到达上限了么?
xi_lin
2015-10-16 14:22:47 +08:00
@kendetrics 我感觉抓旧版的包还是很可能发生的。。不过加密是个好思路,后续打算试试。
有预留一个弹出信息接口~
xi_lin
2015-10-16 14:23:09 +08:00
@avichen 存量的老 app 没法加呀,发出去的版本波出去的水

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/228262

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX