1)防火墙
防火墙也是互联网安全攻防中重要的屏障,我们通过配置访问规则,可以限制只有被允许的IP才可以进行访问。
防火墙还可以识别和阻止DDoS攻击,通过识别并过滤恶意流量请求,防火墙可以有效的防御,保护接口正常运行。
2)用户认证
在调用接口之后,需要对接口中的身份信息进行认证和授权,只有授权过的合法用户才可继续访问。
常用的有OAtuh2.0等标准协议,通过token的形式进行身份验证,确保用户已经登陆或者已经具备该接口的访问权限,从而限制接口的访问。
我们可以自定义一个注解,在注解上添加权限授权标识,并在网关上增加权限拦截器,对增加了该权限注解的接口进行权限验证,只有匹配该接口所需要的权限才可以访问。
3)访问频率
增加访问频率限制,限制同一个用户在一段时间内的请求接口次数。我们可以根据用户角色的不同设置不同的等级限制。
访问频率这块我们可以都适用动态配置的,可以考虑一下两点方向:
-
访问策略限制可以配置调整。
-
限制算法与业务影响最小,既能有效防止恶意请求,也不影响正常用户访问。
4)验证码
比如登陆时用的短信验证码,页面限制60秒发送一次,大大延长用户操作的时间,但是当用户刷新了页面,对于当前页面来说,用户还是可以继续点击发送短信验证码,所以服务端我们也要做访问限制。
当请求进来后,以用户手机号为key,判断最近发送验证码的时间,如果大于60s,就发送短信,反之拒绝。
服务端做限制,以手机号发送验证码举例,不仅要限制发送验证的频率,还要限制每天同一个手机号最多发送几次验证码。
以用户手机号以及当天日期为key,增加当天该手机号发送验证码次数,超过一定次数拒绝发送短信。
5)IP白名单和黑名单
对于信任的IP地址直接加入白名单,对于明确知道恶意请求的 IP,直接加入黑名单。(如何知道是恶意请求,就是下一个手段,监控)
白名单黑名单的配置我们可以使用配置中心,Nacos 或者 Apollo,这样当线上使用时可以动态的增加删除,使其动态生效。
6)监控
在系统中增加监控系统,对接口的请求记录保存日志,通过对日志进行分析,发现突发流量时使用限制访问频率或者封禁IP等手段,然后同步发送短信或者邮件提醒管理员。
监控的范围最好是覆盖广,相当于全接口的监控,然后是实时、准确,最好有可视化的监控报告,帮助管理员或者运维人员排查。
7)数据加密
为何能自动化的使用程序刷接口,就是因为通过各种手段破解了我们接口所需要的参数以及认证信息,那么我们对接口进行加密就可以增加这个过程的难度,让其再去破译该接口就变的没有那么容易。
加密有多种,首先可以数据加密,也就是传的参数,前后端约定加密算法。然后是使用HTTPS安全传输协议,对接口传输的数据进行加密,防止数据被中间人窃取篡改,保证接口安全。
8)用户行为分析
在监控系统的基础上,增加用户分析,对用户的特点行为进行分析,发现异常行为时作出相应的处理。但是需要确保不能影响到正常的用户,也不能使用单一的条件进行分析,需要多方位的,比如用户的登录设备、IP、时间点等。
补充知识:
接口的幂
在后端开发中,接口的“幂”并不是一个标准术语,因此可能需要一些上下文来准确理解您的问题。不过,如果这里的“幂”指的是接口的“幂等性”(Idempotency),那么这是一个非常重要的概念,特别是在设计RESTful API时。
幂等性意味着一个操作可以多次执行,而结果都相同,不会因为重复执行而产生额外的影响。换句话说,无论你调用一次还是多次相同的API请求,系统状态和响应都应该保持一致。这对于保证API的可靠性和避免因网络重传或用户误操作导致的不良后果至关重要。
具体到HTTP方法上:get, head , put, delete
方法通常是幂等的。
-
GET
请求用于获取资源,多次请求不会改变服务器状态。 -
HEAD
类似于GET
,但只返回头部信息,同样幂等。 -
PUT
请求用于替换已有资源或创建特定URI下的新资源(如果不存在),无论请求一次还是多次,最终服务器上的资源状态是一样的。 -
DELETE
请求用于删除资源,一旦资源被删除,再次发送同样的请求,服务器会确认资源已经删除,状态不变。
相比之下,POST
请求通常不是幂等的,因为它用于创建新的资源,每次请求都会导致新的资源被创建,产生不同的结果。
在设计API时,明确每个接口的幂等性对于客户端开发者来说非常重要,因为它影响着他们如何处理错误重试逻辑和其他异常情况。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 后端防接口被刷
发表评论 取消回复