整理常见几种实现防刷方案
现在的很多的电商公司都会提供一些低价的商品做秒杀活动来吸引用户的参与,但是有一些不良的用户会利用非法手段抢购这些商品进而导致网站内的正常用户无法抢到商品,为了保证正常的用户可以抢到活动商品,网站通常会做防刷单的保护机制,下面我们整理一些常见的防刷单方案。
1、防火墙
防火墙是网络安全中最基本的安全设备之一,主要用于防止未经授权的网络访问和攻击。防火墙可以防止的攻击行为包括:
(1)无效数据包:防火墙可以识别和过滤掉无效的数据包,比如错误的IP地址、伪造的数据包和无法识别的协议等。
(2)DOS和DDOS攻击:防火墙可以使用不同的技术来检测和阻止DOS 和DDOS攻击。
(3)病毒和蠕虫攻击:防火墙可以使用特定的病毒和蠕虫检测技术,如签名检测、行为检测、模式识别等来防止这些恶意软件的传播。
(4)网络钓鱼和欺骗攻击:防火墙可以检测和防止网络钓鱼和欺骗攻击,如防止虚假登录页面和欺骗的网站等。
(5)恶意流量攻击:防火墙可以检测和防止恶意流量攻击,如过滤掉带有恶意载荷的数据包和防止被黑客利用的端口。
2、防刷接口
有些用户会绕过前端页面转而直接请求后端的接口,然后发起大量的请求,这种场景我们后端需要做限流。
限流的实现方式有很多,如使用Nginx(Nginx的limit_req模块可以限制单位时间内的请求速率)、使用网关、使用MQ(如HiveMQ,它是一个开源的消息代理软件,支持发布/订阅和队列模型。通过将请求队列化,可以限制单位时间内的请求数量)都可以去限流。我们实现限流之后,依然还是有很多重复的请求进入服务器,对于重复的请求处理方案是在请求到达我们的接口之前,使用Redis做处理,处理流程图如下所示:
首先在Redis当中通过setnx命令来保证同一个用户同一个请求只能有一个生效,这样就可以达到防刷的效果。
3、验证码
对于一些比较重要的接口,为防止恶意用户刷接口,通常都会使用验证码机制,早期比较常见的是图形化验证码,如下图所示:
但是图形验证码比较简单,很容易被一些暴力破解工具破解,因此出现了滑块验证码,如下所示:
此外还有手机验证码验证,我们会在注册的时候通过加入手机验证码认证,一般情况下只能在一个运营商那里通过实名认证申请一个手机号码,那通过这种方式去杜绝一些非法的用户。
4、业务风控
无论采用什么手段,其实都不能完全避免刷单行为,但是我们可以做风控,在业务方面可以做如下的处理:
(1)要求参加活动的用户必须要完成实名认证,这样可以保证参与活动的用户都是实名用户。
(2)设置参与活动用户的消费门槛,用户参加秒杀活动,就必须要满足在平台上的消费门槛。
(3)设置活动的优惠是随机的优惠(如根据用户在平台的购买行为,提供一些不同层次的优惠),不让每一个用户的优惠都一样的。
(4)限制用户的参与,限制中奖次数,通过限制用户的中奖次数,可以让更多的用户参与。
(5)将奖金池或者一些优惠券的数量设置一个上限。
5、技术风控
(1)活动开始后会有大量的用户(合法用户和非合法用户都存在)此时的流量会比平常多几倍,如果系统没有限流的话,那么系统可能会崩溃,所以最好能做一些自动扩容伸缩来应对不同时期的一个流量。
(2)使用黑名单,黑名单的来源可以通过客服标记方式获取,平台客服一旦识别到了用户行为异常,就将此用户标记到黑名单上,那么在活动中我们能借助布隆过滤器检测用户是否在黑名单中来做一层判断。
(3)使用公司内部建立的用户画像数据,或者外部采购用户的数据画像来判断用户是否正常的用户。