Daily-Interview-Question icon indicating copy to clipboard operation
Daily-Interview-Question copied to clipboard

第 131 题:接口如何防刷

Open ravencrown opened this issue 6 years ago • 18 comments
trafficstars

去了京东、腾讯、虾皮等厂子都问到了这个问题。 我们之前也遇到过,基本就是后端工程师限制用户的接口调用次数,面试官希望可以有更多的答案。

ravencrown avatar Aug 23 '19 15:08 ravencrown

  1. referer校验
  2. UA校验
  3. 频率限制(1s内接口调用次数限制)

SuperJolly avatar Aug 24 '19 08:08 SuperJolly

把某个key加配料,带上时间戳,加密,请求时带上,过期或解密失败则403。

impeiran avatar Aug 24 '19 08:08 impeiran

防刷一般分两种:

  • 总调用次数受限制。这个一般是在后端做限制,单位时间内最多可调用次数。
  • 同一客户端次数限制。这个前端的一般使用是给接口调用加锁,在返回结果或者一定时间之后解锁。

yjua avatar Aug 26 '19 02:08 yjua

1:网关控制流量洪峰,对在一个时间段内出现流量异常,可以拒绝请求(参考个人博客文章 https://mp.csdn.net/postedit/81672222) 2:源ip请求个数限制。对请求来源的ip请求个数做限制 3:http请求头信息校验;(例如hostUser-AgentReferer) 4:对用户唯一身份uid进行限制和校验。例如基本的长度,组合方式,甚至有效性进行判断。或者uid具有一定的时效性 5:前后端协议采用二进制方式进行交互或者协议采用签名机制 6:人机验证,验证码,短信验证码,滑动图片形式,12306形式 ———————————————— 版权声明:本文为CSDN博主「timy07」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/timy07/article/details/86467994

YoungYang7 avatar Aug 26 '19 02:08 YoungYang7

前端埋点,判断是否用户行为

twosugar avatar Aug 26 '19 07:08 twosugar

是否可以用参数签名?

ravencrown avatar Aug 26 '19 08:08 ravencrown

刷接口直接走脚本,前端限制有一定作用,但不大。

  • 根据IP限制调用次数【请求在代理服务器被拦截nginx,减少后端服务被调用】;
  • 拦截器特定信息校验,例如:token【后端服务器拦截器,减少业务判断和处理】;

woolson avatar Aug 26 '19 09:08 woolson

1、UA校验 2、IP限制 3、验证码

参考: https://www.zhihu.com/question/34980963

changchangge avatar Aug 26 '19 12:08 changchangge

前端可以使用节流的方式,添加时间戳等

Mikerui avatar Aug 27 '19 01:08 Mikerui

前端如使用axios请求, 是有请求前拦截的, 把最近的一些请求地址加进数组, 请求前拦截器 判断一定时间内这个地址是否再出现 来控制请求频率

bgwd666 avatar Aug 28 '19 10:08 bgwd666

例如,公开的投票网站,,如何防止刷票,防止不了。真的没办法。

mannymu avatar Aug 30 '19 02:08 mannymu

前端可以使用节流的方式,添加时间戳等

前端节流对防刷意义不大,刷接口肯定不是通过点页面的按钮这种方式来刷的。

thinkfish avatar Aug 30 '19 07:08 thinkfish

1、校验请求头referer 2、校验请求token; 3、请求频率

brady0316 avatar Sep 09 '19 08:09 brady0316

反爬虫

Jesseszhang avatar Oct 28 '19 06:10 Jesseszhang

把某个key加配料,带上时间戳,加密,请求时带上,过期或解密失败则403。

@impeiran 不限制频率还是没用啊

luckymore avatar Nov 06 '19 10:11 luckymore

接口防刷,前端能做的很少吧。 刷接口那肯定不是通过DOM刷,那效率太低了。 我能想到的前端能做的优化无非就是防抖、节流这些

acejs avatar Aug 01 '20 03:08 acejs

刷是禁止不了的,只能提高刷的成本

前端:

  1. 限制按钮,表单提交次数,防抖
  2. 增加图片验证码,类似12306

后端:

  1. ip,user_agent,referer
  2. 用户唯一标示
  3. 简单验证码
  4. 手机号验证码
  5. api key,rsa加密认证,ca认证(后端与后端之间调用)
  6. ip黑名单(一般是刷的频率太大,达到ddos水平了或者确认为恶意调用)

pq-dong avatar Aug 24 '20 08:08 pq-dong

后端 接口调用次数限流 通过 IP host referer ua 判断 限制 前端 增加验证码,之类的进行控制 接口防抖

Yangfan2016 avatar Aug 20 '22 12:08 Yangfan2016