问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何保证API接口安全?

发布网友 发布时间:2022-04-20 07:39

我来回答

1个回答

热心网友 时间:2023-04-26 09:49

在实际的业务开发过程中,我们常常会碰到需要与第三方互联网公司进行技术对接,例如支付宝支付对接、微信支付对接、高德地图查询对接等等服务,如果你是一个创业型互联网,大部分可能都是对接别的公司api接口。

当你的公司体量上来了时候,这个时候可能有一些公司开始找你进行技术对接了,转变成由你来提供api接口,那这个时候,我们应该如何设计并保证API接口安全呢?

最常用的方案,主要有两种:

其中 token 方案,是一种在web端使用最广的接口鉴权方案,我记得在之前写过一篇《手把手教你,使用JWT实现单点登录》的文章,里面介绍的比较详细,有兴趣的朋友可以看一下,没了解的也没关系,我们在此简单的介绍一下 token 方案。

从上图,我们可以很清晰的看到,token 方案的实现主要有以下几个步骤:

在实际使用过程中,当用户登录成功之后,生成的token存放在redis中时是有时效的,一般设置为2个小时,过了2个小时之后会自动失效,这个时候我们就需要重新登录,然后再次获取有效token。

token方案,是目前业务类型的项目当中使用最广的方案,而且实用性非常高,可以很有效的防止黑客们进行抓包、爬取数据。

但是 token 方案也有一些缺点!最明显的就是与第三方公司进行接口对接的时候,当你的接口请求量非常大,这个时候 token 突然失效了,会有大量的接口请求失败。

这个我深有体会,我记得在很早的时候,跟一家中、大型互联网公司进行联调的时候,他们提供给我的接口对接方案就是token方案,当时我司的流量高峰期时候,请求他们的接口大量报错,原因就是因为token失效了,当token失效时,我们会调用他们刷新token接口,刷新完成之后,在token失效与重新刷新token这个时间间隔期间,就会出现大量的请求失败的日志,因此在实际API对接过程中,我不推荐大家采用 token方案。

接口签名,顾名思义,就是通过一些签名规则对参数进行签名,然后把签名的信息放入请求头部,服务端收到客户端请求之后,同样的只需要按照已定的规则生产对应的签名串与客户端的签名信息进行对比,如果一致,就进入业务处理流程;如果不通过,就提示签名验证失败。

在接口签名方案中,主要有四个核心参数:

其中签名的生成规则,分两个步骤:

参数2加密结果,就是我们要的最终签名串。

接口签名方案,尤其是在接口请求量很大的情况下,依然很稳定。

换句话说,你可以将接口签名看作成对token方案的一种补充。

但是如果想把接口签名方案,推广到前后端对接,答案是:不适合。

因为签名计算非常复杂,其次,就是容易泄漏appsecret!

说了这么多,下面我们就一起来用程序实践一下吧!

就像上文所说,token方案重点在于,当用户登录成功之后,我们只需要生成好对应的token,然后将其返回给前端,在下次请求业务接口的时候,需要把token带上。

具体的实践,也可以分两种:

下面,我们介绍的是第二种实现方式。

首先,编写一个jwt 工具。

接着,我们在登录的时候,生成一个token,然后返回给客户端。

最后,编写一个统一*,用于验证客户端传入的token是否有效。

在生成token的时候,我们可以将一些基本的用户信息,例如用户ID、用户姓名,存入token中,这样当token鉴权通过之后,我们只需要通过解析里面的信息,即可获取对应的用户ID,可以省下去数据库查询一些基本信息的操作。

同时,使用的过程中,尽量不要存放敏感信息,因为很容易被黑客解析!

同样的思路,站在服务端验证的角度,我们可以先编写一个签名*,验证客户端传入的参数是否合法,只要有一项不合法,就提示错误。

具体代码实践如下:

签名工具类 SignUtil :

签名计算,可以换成 hamc 方式进行计算,思路大致一样。

上面介绍的token和接口签名方案,对外都可以对提供的接口起到保护作用,防止别人篡改请求,或者模拟请求。

但是缺少对数据自身的安全保护,即请求的参数和返回的数据都是有可能被别人拦截获取的,而这些数据又是明文的,所以只要被拦截,就能获得相应的业务数据。

对于这种情况,推荐大家对请求参数和返回参数进行加密处理,例如RSA、AES等加密工具。

同时,在生产环境,采用 https 方式进行传输,可以起到很好的安全保护作用!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? php怎样用des加密算法给接口加密 android 接口数据如何加密 接口如何对https加密 在云计算中虽然api接口传输采用https进行加密传输... 路由器属于OSI的那一层,为什么 ? 有多少妈妈拍过孕妇写真啊? 孕妇照拍摄什么样的场景比较合适? 要想拍出最美孕妇照,孕妈妈需掌哪些重点? 以下程序的作用是什么? 游戏程序有什么作用? 程序的作用 汇编程序的功能和作用是什么? 在控制面板中使用程序的作用是 什么是小程序,有什么作用? 电脑上的应用程序有哪些作用 编译程序的作用是 计算机程序的功能是什么? 程序的功能是什么 在冯.诺伊的模型计算机中,程序的作用是什么? 计算机程序有什么作用? java给别人提供接口,接口安全怎么保证 web端调接口用angularJS的post请求,接口传输数据... 有什么办法或者软件可以将电脑的USB接口给加密! 接口进行sha1加密是什么意思 http和https接口有什么区别 java怎么调用别人加密后的接口啊? java 接口都用什么加密 有没有106短信接口可以加密传输短信内容? 后端接口进行加密处理,我前端要怎样配合 接口测试中的加密算法如何实现? 如何防止 Android App 被反编译后接口泄露? 单位电脑的USB接口被加密软件封了,拷贝东西极其不... 橄榄酵素是什么?有什么用? 橄榄酵素几天能吃 哪些蔬菜适合做酵素 如何酵素养油? 台湾黄家农庄橄榄酵素 梅子酵素减肥 求介绍初心果酵素橄榄的成份? 酸梅酵素及橄榄酵素哪个好? 酵素和橄榄油能一起喝吗?会有什么效果和副作用?