接口访问加密和限频方案

需求:安全性要求较高的接口暴露到公网中,需要进行加密和限频.

案例:根据用户手机号查询用户ID,需要防止根据phone库非法扫接口,
1.返回uid加密:
采用RSA加密,私钥加密,公钥解密,为了混淆结果,无论有无uid都返回加密结果。当无结果会根据phone md5截取7位
作为伪号,使用另一私钥加密。如果公钥解密失败则说明无对应uid。
2.限频,根据key=access_token 50次每天。limit50; timeunit:day
public long incr(String key) {
long count = redisTemplate.opsForValue().increment(key, 1);
if (count == 1) {
// 暂时不考虑设置超时时间失败的情况
redisTemplate.expire(key, 1, timeUnit);
}
if (count > limit) {
// 超过临界值之后, 每次错误都延长记录有效期
redisTemplate.expire(key, 1, timeUnit);
}
return count;
}
public long getCountByKey(String key){
long count = redisTemplate.execute((RedisCallback<Long>) (conn) -> {
byte[] countStr = conn.get(key.getBytes(StandardCharsets.UTF_8));
if (countStr == null) {
return 0L;
}
return Long.parseLong(new String(countStr));
});
return count;
}
public void check(String key) {
if (getCountByKey(key) > limit) {
throw new TooManyFailsException();
}
}

时间: 2024-10-13 01:32:54

接口访问加密和限频方案的相关文章

API接口访问频次限制 / 网站恶意爬虫限制 / 网站恶意访问限制 方案

API接口访问频次限制 / 网站恶意爬虫限制 / 网站恶意访问限制 方案 采用多级拦截,后置拦截的方式体系化解决 1 分层拦截 1.1 第一层 商业web应用防火墙(WAF) 直接用商业服务 传统的F5硬件,不过现在用的很少了 云时代就用云时代的产品,典型代表 阿里云 web应用防火墙 1.2 第二层 API 网关(API Gateway)层 API 网关(API Gateway) kong为代表的开源 API 网关 实现 openresty + lua 自实现 windows平台 安全狗.云锁

Guava-RateLimiter实现令牌桶控制接口限流方案

一.前言 限流的目的是通过对并发/一个时间窗口内的请求进行限速来达到保护系统的效果,一旦达到限制速率则可以拒绝服务.排队或等待.降级等处理. 二.常见限流方案   原理 优点 缺点 计数器法 在单位时间段内,对请求数进行计数,如果数量超过了单位时间的限制,则执行限流策略,当单位时间结束后,计数器清零,这个过程周而复始,就是计数器法. null 不能均衡限流,在一个单位时间的末尾和下一个单位时间的开始,很可能会有两个访问的峰值,导致系统崩溃.   漏桶算法                     

轻型的接口访问频率限制服务模型的设计与实现【转】

原文地址:http://www.iam3y.com/html/878.html 最近需要设计open api的接口频次控制相关实现,便查阅相关文档. 接口频次控制主要包括两方面: (1)业务ID对某一个接口某时间间隔(如一分钟)内访问的次数 限制 (2)业务ID在某个时间周期(如一天)内访问的次数 限制 对于存储并进行频次计数的服务来说,要具备以下的特点: (1)自更新能力,在某个约定的时间点对所有的node(节点)进行自更新操作,也就是常说的出厂设置 (2)协议轻型能力,协议必须尽可能简单,才

性能提速:debounce(防抖)、throttle(节流/限频)

debounce与throttle是用户交互处理中常用到的性能提速方案,debounce用来实现防抖动,throttle用来实现节流(限频).那么这两个方法到底是什么(what)?为何要用(why-解决什么问题)?具体的实现原理,以及函数运行过程是怎样的呢(how)? 1.what? 连续操作:两个操作之间的时间间隔小于设定的阀值,这样子的一连串操作视为连续操作. debounce(防抖):一个连续操作中的处理,只触发一次,从而实现防抖动. throttle:一个连续操作中的处理,按照阀值时间间

微服务架构下的分布式限流方案思考

1.微服务限流 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.缓存.降级和限流是保护微服务系统运行稳定性的三大利器.缓存的目的是提升系统访问速度和增大系统能处理的容量,而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开,而有些场景并不能用缓存和降级来解决,比如稀缺资源.数据库的写操作.频繁的复杂查询,因此需有一种手段来限制这些场景的请求量,即限流. 比如当我们设计了一个函数,准备上线,这时候这个函数会消耗一些资源,处理上限是1秒服务3000个QPS

使用nginx构建限频、限速、限并发的应用保护层

使用nginx构建限频.限速.限并发的应用保护层 nginx本身提供了基础的限频.限速.限并发连接等能力. 限频 基于uri等限制某一个客户端,某类客户端持续时间段内建立连接的次数. 限速 限制客户端读取.发送数据包的速度,从总体看,即使限制网速. 限并发 限制客户端同时允许创建的连接,防止单个客户端创建过多连接耗尽服务器资源. 限频 http://nginx.org/en/docs/http/ngx_http_limit_req_module.html http { # 定义2条限速区域 #

常用限流方案的设计与实现

为了保证业务在高峰期的可用性,主流系统都会配备服务降级的工具,而限流就是目前系统最常采用的方案之一.限流即流量限制,目的是在遇到流量高峰或者流量突增(流量尖刺)时,把流量速率控制在合理的范围之内,不至于被高流量击垮. 常见的限流方式 服务降级中的限流并没有我们想象的那么简单.第一,限流方案必须时可选的,没有任何方案可以适用所有场景.第二,限流策略必须时可配置的. 集中常见的限流方式: 通过限制单位时间段内的调用量来限流. 通过限制系统的并发调用程度来限流. 通过漏桶(Leaky Bucket)算

孢子框架-接口访问层、ESB、微服务API GateWay对比

如果从百度去搜索“接口访问层”你会发现主要是.NET里面的技术,叫做IDAL,其实是数据访问层接口.它的主要作用是兼容多种数据库.比如你定义一个标准接口,然后实现改接口的SqlServer访问和Oracle访问,那么利用IDAL就可以自由切换数据库.看.NET DEMO PetShop4,总共有22个项目.大体思想是3层,从Model.DAL.BLL,然后他在各层上又采用了工厂模式,把逻辑与实现想分离,比如以前BLL直接调用DAL就好了,但现在BLL却调用了IDAL,IDAL就是一个接口层,里面

Odoo(OpenERP)开发实践:通过XML-RPC接口访问Odoo数据库

Odoo(OpenERP)服务器支持通过XML-RPC接口访问.操作数据库,基于此可实现与其他系统的交互与集成. 本文是使用Java通过XMLRPC接口操作Odoo数据库的简单示例.本例引用的jar包包括xmlrpc-common-3.1.3.jar, xmlrpc-client-3.1.3.jar和ws-commons-util-1.0.2.jar,如需要,可点击这里下载. package memo.by.weichen; import java.net.URL; import java.ut