1
nyanyh 2019-07-27 23:12:56 +08:00
token 时间缩短
限制后端 API 单位时间内访问次数 检测前端环境指纹( webrtc/canvas 之类),发现变化较大直接拉黑 token+访问者 IP |
2
nyanyh 2019-07-27 23:14:49 +08:00
或者模仿淘宝之类,在前端使用一个复杂混淆的 js 存放一套动态参数校验算法,访问后端接口时验证此参数
|
3
liuxey 2019-07-27 23:20:00 +08:00
了解下反爬方面的知识,最基本的 UA、IP 什么的不说了,主要是行为方面,总结下:
一个人类不可能 1s 内访问特殊接口>N 个 一个人类不可能连续 N 小时访问你的 API 一个人类不可能连续请求某一个接口,但是参数在做遍历,如 id=1...id=999 一个人类不可能只请求 API 接口而不请求资源文件 |
4
oppoic 2019-07-27 23:21:24 +08:00 via iPhone
楼上的做法可以,但是为了一个或者几个捣乱的就加规则无疑增加了服务端的负担,毕竟大部分用户都是正常用户。我建议后端加上接口访问统计即可,每天扫一眼哪个 token 访问接口次数不正常,手动封一下该用户即可。
|
6
cs3230524 OP 目前的环境是微信小程序。所以:
2 楼的办法应该是没啥用的,我了解过淘宝这个。攻击者可以很轻松拿到这个 js 而不用考虑具体算法,直接用载入这个 js 调用函数来模拟生成参数。始终都是前端都东西。 现在用户数据很容易获取到,所以 3、4 楼的办法也基本无效,封了他可以再重新申请。 |
7
unclemcz 2019-07-28 13:00:05 +08:00 via Android
接口加时间戳参数和根据时间戳加密的 token,加密代码混淆,可以防绝大部分场景,但还是防不住有经验的人反编译小程序包 wxapkg 拿到加密代码。
|
8
lscho 2019-07-28 13:14:17 +08:00 via Android
2 楼 3 楼的办法是正确的,也是常用的。不明白为什么说无效?
2 楼的办法就是自己实现一个签名算法,前端混淆一下,后端进行验证,只要算法没有被破解,或者定期更换前端 key,就肯定是安全的。 3 楼的办法也很实用,行为验证这个肯定没法破解,目前阿里系都是行为验证。比如你登录页面是从首页链接过来的,那么没有请求首页接口,直接请求登录接口肯定是异常的。只请求接口,不请求静态资源,肯定也不是真人。如此规则多检测几条行为,绝对破解不了。 |
9
danhahaha 2019-07-28 13:31:24 +08:00
@liuxey 在 3 楼基础之上,加入一个权重系数,机器人系数
1s 内访问特殊接口>4 计 4 分, 连续 N 小时访问 计入 N 分 有参数在做遍历动作计 10 分 只请求 API 接口而不请求资源文件计入 10 分 给每个 token 计分,然后超过一个阙值,直接封,阙值可以手动调整 |
10
annielong 2019-07-28 13:58:58 +08:00
看影响度,如果影响大就加限制,技术从来就不是问题,问题是权衡是否值当加限制,
|
11
locoz 2019-07-28 14:35:50 +08:00 via Android
看了一下楼主的回复,Web 端都基本无解的问题,小程序里就更别想着解了,参考我在这个帖子下的回复:后端接口被盗用有什么好办法么?
https://www.v2ex.com/t/586612 行为验证(风控)不现实,成本太高。 |
12
LLaMA2 2019-07-28 18:02:30 +08:00
有登录,手机号是用户名?
那么问题来了,自己写一套工具链,专业做这种检测的。让机器人程序筛选出有问题的账号,封停手机号,随着时间推移,不断的完善机器人程序的筛选规则。他要是有几百个几万个手机号,那他牛逼。 |
13
starsriver 2019-07-29 00:17:20 +08:00 via Android
都在讨论反爬。如果是前端服务器只有有限个,跨域限制了解一下。
|
15
nnnToTnnn 2019-07-29 09:35:23 +08:00
reCaptcha 不就很好的解决这个问题? 而且还是免费的
|