php - 接口被恶意调用,如何解决
PHP中文网
PHP中文网 2017-04-11 10:02:14
[PHP讨论组]

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

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(21)
巴扎黑

最常用的方式有几种
1.可以增加图文验证码
2.可以针对手机号做过滤
3.ip限制,单点时间范围可请求时长

伊谢尔伦

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

天蓬老师

这个情形我遇到过,我怀疑是专业的公司做的,他们的IP非常多,然后模拟普通用户让你难以预防,封杀的太死会误伤自己的客户.简单的就是请求接口前加大验证的难度.比如我就引入极验和把短信商给换为阿里大鱼(因为阿里做好了限制,比较方便),这两个大大的减少了被爆的几率.

不过,最后烦不胜烦,这种抓了一堆肉鸡来攻击你的接口是很难干过他的,我把手机接口给去了,由于面向的用户基本都是年轻人,索性直接强制绑定微信,利用微信的模板消息来推送了.

阿神

图片验证码一点用没有,低端一点可以用打码平台,高端直接识别二维码。

建议完善ip验证,抓取用户真实ip而非代理ip地址

遇到这种情况,没办法防,从开发的角度来看,无论对面怎么做,我们都可以刷api

PHP中文网

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

高洛峰

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

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

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

ringa_lee

楼主写的接口是对android和ios的app开放的吗?
如果是这个就比较简单了。
首先攻击方如果是手动刷的话,那就没办法了。但是攻击方这么做的效率也很低,我判定他们一定是通过程序进行攻击的。
下面是针对程序攻击破解的方法:
在客户端中添加一个私钥字符串,服务器端也有相同的私钥字符串。
客户端向服务器端请求短信接口时,客户端将“私钥字符串+手机号码”md5加密生成一个token的字段。然后将token与手机号码发给服务器端。
服务器端在接受到请求后,将存在服务器端的“私钥与手机号码“md5加密,如果相同则发送短信。
这种方式攻击方,就需要破解你们的私钥,这个代价很大。

ringa_lee

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


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

PHP中文网

调用付费接口加上验证码是对公司财务最基本的尊重。

所幸我用的短短信服务商自带防攻击。

ringa_lee

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

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

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

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

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

坐等楼下精彩解答

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号