美文网首页
[115]讨论与第三方服务接口访问的安全性

[115]讨论与第三方服务接口访问的安全性

作者: shawnxjf | 来源:发表于2018-05-04 00:03 被阅读0次

背景

在项目中我们经常用rest 方式调用第三方的服务,对于公司内部的服务可以不进行认证。
在这里我仅讨论根据不同场景如何逐步提升其借口访问的安全性。
本文整体以 clientA 访问 server B 为场景讨论。

最基本情况:不做任何鉴权

server B 只把服务暴露给内网ip,即只有内网客户端能够访问。所以对于内网的所有有效报文请求都信任不会做任何控制。

base Auth:做身份鉴权

client A 要与server B通信前 需要获取身份,比如token(也可以说是会话),以后每次会话都需要带上该该token,用于server B进行身份校验。
其具体请求逻辑为:
第一次请求:
A ------获取token (带上用户名和密码)------> B
A <-----返回token ---------------------------------B
第二次请求:
A ------正式请求携带token --------------------------> B
A <---------如果token失效,则A需要根据B返回错误码提示 重新获取token---------------B
往后请求:
A -------------携带token-------------------->B

从这里看出这里的交互模式与浏览器请求网站服务,用户在浏览器输入用户名和密码后进行登录获取一个cookie,随后该cookie存放在浏览器中(相当于浏览器缓存)。以后用户每次请求都带上该cookie,服务器通过该cookie进行身份验证。

而如果A,B同为服务器,那么存放在A服务器上的(用户名/密码)应该存放在一个私密的地方。
且获取的token应该存放在缓存中(如果是分布式系统就应该存放在分布式缓存中),必便下次A请求的时候携带。

防止篡改

base Auth 解决了身份认证的问题,即知道了该包是来源于信任的地方。但是如果来源于信任地方的包如果在网络上被篡改了数据怎么办?
此时大部分的办法就是通过md5加密验签, 双方开发者协商一个salt。
其具体模式为:
[client A:md5(原串+salt)] ==[ server B md5(原串+salt)]
server B自己对A传过来的数据进行md5验签,如果验签正确表示数据没有被串改。
这种方式解决了身份认证问题和确认数据是否被篡改。由于双方都要对同样的数据+双方约定的salt进行加签名 这就表明了对方是我们线下协商信任的(salt是不会再网络上传输防止了在网络上被截取)。

防止被查看

前面的方式中数据都是以明文的形式在传输,如果有一些隐秘的字段我们不想让它被别人看到的话怎么办呢。
第一种办法:不要传输隐秘字段,比如java序列化中的transient关键字修饰的字段就不会被传输。
第二种办法:对数据进行加密,但是需要对方能够解密。现有大多数方案都是在 client A通过RSA 公钥加密 sever端通过私钥解密。

相关文章

  • [115]讨论与第三方服务接口访问的安全性

    背景 在项目中我们经常用rest 方式调用第三方的服务,对于公司内部的服务可以不进行认证。在这里我仅讨论根据不同场...

  • 使用RestTemplate发送POST请求

    举个栗子 要访问的接口如下:简要描述: 调用第三方文件上传服务 请求URL: ${baseUrl}/file 请求...

  • nginx配置正向代理

    主要解决从本地无法直接调用第三方接口,因为本地ip不在白名单中的问题 1、首先有可以访问接口的服务器,并在服务器上...

  • 整理记录App开发常用功能

    1.网络请求安全性 目的 确保接口都是合法的被访问,而不是外部人员通过接口测试工具(例如postman)进行访问。...

  • 接口安全方法

    服务端对外开放API接口,尤其对移动应用开放接口的时候,更需要关注接口安全性的问题,要确保应用APP与API之间的...

  • 浅谈接口安全那些事

    服务端对外开放API接口,尤其对移动应用开放接口的时候,更需要关注接口安全性的问题,要确保应用APP与API之间的...

  • 开放接口API安全性

    服务端对外开放API接口,尤其对移动应用开放接口的时候,更需要关注接口安全性的问题,要确保应用APP与API之间的...

  • Flutter如何调用硬件与三方服务

    如何调用硬件与第三方服务 在flutter中调用硬件与第三方服务都可以通过集成对应的插件来完成: 用于访问位置信息...

  • SpringBoot系列之RestTemplate调https接

    业务:本系统接口都是http的,调用第三方接口,因为做了安全性校验,所以不能通过RestTemplate调用 方法...

  • w0gan plan

    1 申请第三方服务 2 数据库表设计 3 项目基础架构 4 测试服务器环境搭建 5 原型讨论,新接口整理 6 模拟...

网友评论

      本文标题:[115]讨论与第三方服务接口访问的安全性

      本文链接:https://www.haomeiwen.com/subject/ywrrrftx.html