素材牛VIP会员
接口被恶意调用,如何解决
 岛***疤  分类:PHP代码  人气:1741  回帖:23  发布于6年前 收藏

有个短信接口给用户注册时发送验证码的,然后现在发现有人每次用不同ip 不同号码进行恶意调用,现在接口被调爆,如何解决这个问题呢。
补充一下:目前APP已经发布出去了,能不能再服务器做相关的限制呢,因为在接口做限制,它不停的调的话,还是导致了该接口出现卡的现象

 标签:暂无标签

讨论这个帖子(23)垃圾回帖将一律封号处理……

Lv1 新人
冷***知 职业无 6年前#1

之前遇到过。前端没办法立即加验证码,而那边却在呼呼的耍短信。
当时的解决办法是:
服务器关掉端关掉对短信验证码的请求。
对向服务器请求短信验证码的接口,服务器直接把返回的errorCode设置为异常代码,可以被前端捕获,然后把验证码写到错误信息中,弹出来。这样用户还是可以看到验证码的。


然后再坐下来加图片验证等等

Lv7 码师
雪***狐 职业无 6年前#2

1.每个手机号每天只能调用10次短信接口.
2.每个手机号每分钟只能调用1次.
3.采用token,做好效验.

Lv6 码匠
好***下 职业无 6年前#3

我原来想的是有同源策略就不会有外域能调用,但是后面发现还是有人能用工具搞定,我司采用的是

  1. 将用户的当前ip+mobile 存入memcachedkey里 ,value 为时间戳大家知道怎么玩,到时候取出来算算

  2. 禁止可能出现的跨域请求

  3. 服务端在页面对前端生成类似CsrfToken的令牌,在提交时与后端验证,一次只能验证1个,成功你需要生成新的令牌给前端,因为要考虑可爱的用户有时等待时间什么的,不然用户体验差

但是看到楼主说的有人能换ip 换号码调用,我想的是这样的话就复杂了,啥样的都能搞出来的赶脚

坐等楼下精彩解答

Lv5 码农
牛***满 产品经理 6年前#4

告诉你们个内幕: 很多是短信提供商给刷的, 创业公司很少有那闲功夫去搞竞争对手!

更别说有集群的服务器切换IP去刷, 那是个地下产业链

另外, 简单的图片验证码, 还是能破解的

Lv6 码匠
好***下 职业无 6年前#5

增加发送前验证,必须手动才能生成的那种,比如拖动验证码、拼图验证码;token令牌验证,让每个表单提交只能使用一次

Lv1 新人
多***悟 学生 6年前#6

验证码不能太简单,注意过滤ip,小项目推荐引入第三方验证服务。

Lv4 码徒
小***学 软件测试工程师 6年前#7

图文验证码+参数经过加密生成sign+参数去服务端做校验

Lv7 码师
亡***师 JS工程师 6年前#8

之前我们也遇到过相同的问题,当时的也是不能改前端,后来分析一下请求数据包的共性,因为是用工具批量发的,请求头上有一些特征,我们的接口判断到这些特征后直接返回200,不走后面的业务逻辑。

直接返回200的原因是不想让对方知道我们已经采取了防御措施,避免他们进一步攻击。

Lv1 新人
多***悟 学生 6年前#9

以下思路仅供参考:

  1. APP发版出去了,别人却能够用脚本来跑接口,第一感觉这是安全性没做好,线上的接口一定要开启https访问。这样别人来抓包的难度也会大很多。

  2. 我个人感觉,发送短信的接口可以不暴露给前端,也就是说无法通过直接调用某个接口来发送短信,可以作为一个后端服务,仅暴露给API来访问。发送短信的逻辑可以写在注册,登陆等的逻辑里面。

  3. 对参数进行一次校验,比如可以将请求参数以某种规则组合成某个唯一的值,服务端拿到参数后以相同的规则组合出来看下是不是和校验值一样,如果一样则继续进行操作,如果不一样报错给客户端,这样别人在调用你的接口的时候还需要破解你的这个校验规则,这个规则越难破解,别人通过接口调用也就越难。

  4. 其他的限制可以参考楼上各位大神的思路。

Lv7 码师
un***oo 职业无 6年前#10

ip与手机绑定的形式不好,正常的用户可能会无法使用
1、限制手机号发送验证码的次数
2、验证码
3、token

上一页123下一页
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取