网站注册页面的短信验证接口被利用了,有一个思路

2020-05-25 15:36:16 +08:00
 ksc010
今天刚发现看了下日志 每天发送几千条短信,都是恶意的,手机号应该是随机生成的
用了代理 ip

我现在有一个思路是 在注册页面执行一个耗费资源的 js 计算(比如 1-3s )
计算后得到一个结果,这个结果可以传递到后端,并且后端很容易能做出校验
目的就是增加对方破解的难度
最好是能利用一些 浏览器环境信息,还有用户行为啥的 (后端能验证下是否是机器人)
不知道这样可行么
4875 次点击
所在节点    程序员
43 条回复
Croxx
2020-05-25 15:38:20 +08:00
lz 验证码呢?
ksc010
2020-05-25 15:39:29 +08:00
@Croxx 有验证码的 杂色 划线 干扰字符 都有
sunziren
2020-05-25 15:39:48 +08:00
发短信之前先填写验证码,完了之后才可以输入手机号码如何?
whitev2
2020-05-25 15:40:10 +08:00
挖矿 5s ?
wbrobot
2020-05-25 15:40:14 +08:00
验证邮箱免费
ksc010
2020-05-25 15:40:32 +08:00
@sunziren 现在就是这样子的
Cmdhelp
2020-05-25 15:48:06 +08:00
滑块
labulaka521
2020-05-25 15:49:32 +08:00
验证码估计很简单
kucy
2020-05-25 15:50:22 +08:00
imaning
2020-05-25 15:51:14 +08:00
我用的极验
iamverylovely
2020-05-25 15:52:27 +08:00
感觉验证码没起到作用啊,必须输入验证码,验证码正确,才能发短信,一次失效,应该是不会有这种问题的吧
wanwaneryide
2020-05-25 16:02:45 +08:00
手机号不一定是随机的,有可能被拿来做短信轰炸了,基本上这类软件都是这样的。
ychost
2020-05-25 16:06:34 +08:00
挖矿吧,前端挖 0.00001 个 ETH,然后才给验证码,这样既满足了楼主的需求,还能浪费电
zpfhbyx
2020-05-25 16:08:00 +08:00
比如加载某个比较小的图片.. 改成后端数据流渲染,然后 js 判断是否是无头浏览器, 如果没有加载图片,就认为是机器呗,验证码不实际发送,返回发送成功,后台记录就好
brader
2020-05-25 16:08:08 +08:00
可提供如下参考思路:
一:接口设计加一个 sign 字段,sign 不对的都为非法请求(这条只能拦截初级程序员,网页端源码较容易看到,APP 端需要反编译,能稍微提高一定的技术门槛吧)。
二:限制每个 IP 每天发送短信的频率。
三:增加一些技术成熟的验证码功能(如:极验)。
四:表单请求中,附带 token,避免重复提交。
五:APP 的话,可以要求前端传递设备唯一标识号。
六:后端捕获到客户端频繁、严重违反上诉行为的,直接封 IP 、封设备、封账号。
七:对于违反上诉行为的,后端不要返回具体错误原因给客户端,返回一个模糊错误即可,这样能增加客户端猜解接口报错原因的难度。
coolcoffee
2020-05-25 16:10:08 +08:00
我觉得还是加个图形验证码或者交互验证码作为前置吧,万一攻击者拿其他肉鸡作为运算机器呢。
ksc010
2020-05-25 16:15:52 +08:00
@iamverylovely 目前验证码相对来说挺复杂的(有混淆)但是先有的 dama 平台是可以破解的
早就限制了 单个 ip 单个手机号的发送次数,但是对方用了代理 手机号也不重复
@wanwaneryide 是随机的 前几位都是固定的几组 比如 1863321 这样的
brader
2020-05-25 16:18:16 +08:00
另外,还有一些巧妙的防御思路,自己可以花点心思琢磨:
比如:接口调用顺序(一般用户去你网址注册,会先去首页,再点注册),你发现这个客户端,直接就调用注册接口的,就可归类为非法请求。前提也是不要抛出具体错误原因给客户端,让客户端猜不出什么原因造成的非法请求。

其实,短信的攻防没有完美的解决方案,在于攻击你的人愿不愿意付出更多的成本来攻击你,也就是从你那里获得的回报要能大于他的付出,控制好这个点就 ok 了,你做了图片验证,他使用 OCR 和打码平台也是需要成本的,当成本高于收益,他自然不会干这种傻事
shiny
2020-05-25 16:23:52 +08:00
对于这条:1. 目前是有验证码 相对来说挺复杂的(有混淆)但是现有的 dama 平台是可以破解的

破解也要花钱,如果成本和短信持平,那就没有动力来利用你的接口了。
ksc010
2020-05-25 16:24:52 +08:00
@brader 对 这个方法也想来
同时加上 session 存活时间等等的判断

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

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

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

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

© 2021 V2EX