API 接口安全整理

1. API 接口安全整理

1.1. HTTP 接口安全概述:

HTTP 接口是互联网各系统之间对接的重要方式之一, 使用 HTTP 接口, 开发和调用都很方便, 也是被大量采用的方式, 它可以让不同系统之间实现数据的交换和共享, 但由于 HTTP 接口开放在互联网上, 那么我们就需要有一定的安全措施来保证不能是随随便便就可以调用;

目前国内互联网公司主要采用两种做法实现接口的安全:

  • 一种是以支付宝等支付公司为代表的私钥公钥签名验证机制;
    -一种是大量互联网企业都常采用的参数签名验证机制;

1.2. HTTP 接口安全演进:

  1. 完全开放的接口(完全开放)
  2. 接口参数签名(基本安全)
  3. 接口参数签名 + 时效性验证(更加安全)
  4. 接口参数私钥签名公钥验签(固若金汤)
  5. 接口参数签名 + HTTPS(金钟罩)
  6. 口参数私钥签名公钥验签 + HTTPS(金钟罩)

总之: 安全是相对的, 只有相对的安全, 没有绝对的安全!

1.3. HTTP 接口安全设计及应用

1.3.1. 接口参数私钥签名公钥验签

先来看看私钥 + 公钥的安全模式, 这是一种更为安全的方式, 它通过私钥和公钥实现接口的安全, 目前互联网中主要是以支付宝

为代表的公司采用这种机制; (有很多开放平台也是采用这种机制) . 具体业务流所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZPbCqYLg-1670570282844)(HTTPS://hjs-1251193177.cos.ap-shanghai.myqcloud.com/web/api-sign1.png)]

该签名是通过 4 个秘钥来实现的, 分别是:

客户端应用私钥 , 客户端公钥 , 服务端应用私钥 , 服务端公钥.

私钥都是用来生成签名的, 公钥都是用来解密的, 客户端的公钥解密客户端的私钥生成的签名, 服务端的公钥解密服务端的私钥生

成的签名, 相信这样解释应该会比较好理解的.

好了, 下面就来看看是如何具体操作的, 我的具体操作步骤:

首先, 4 把密钥都是通过 OpenSSL 工具生成, 你需要先获得这个工具: 官方网站: HTTPS://www.openssl.org/

介绍一下这个工具吧, OpenSSL 是一个开源的安全套接字层密码库, 囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议, 并提供丰富的应用程序测试或其它目的使用; OpenSSL 整个软件包大概可以分成三个主要的功能部分: SSL 协议库、应用程序以及密码算法库;

  1. 确保 Linux 已经安装 openssl  :

使用命令检查 Linux 是否已经安装 openssl: yum list installed | grep openssl

如果没有安装, 则执行命令进行安装: yum install openssl openssl-devel -y

  1. 创建秘钥生成的目的地(文件夹):

我是在根目录中的 soft 文件夹下创建的

mkdir server , mkdir client 先创建这两个文件, 然后 Linux 会默认将生成的秘钥放入其中.

  1. 生成秘钥

进入 server 文件, 输入 openssl  进入 Openssl 命令行;

使用 openssl 生成私钥, 执行如下命令:

genrsa -out rsa_private_key.pem 2048

注意一点 Java 开发者需要将私钥转换成 PKCS8 格式, 其他语言不用这一步操作, 执行如下命令:

pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out rsa_private_key_pkcs8.pem

使用 openssl 生成公钥, 执行如下命令:

rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

退出 openssl 命令行: exit

经过以上步骤, 我们可以在当前目录中 (server) 看到三个文件:

rsa_private_key.pem(RSA 私钥)
rsa_private_key_pkcs8.pem(pkcs8 格式 RSA 私钥)(我们 java 要使用的私钥是这一个)
rsa_public_key.pem(对应 RSA 公钥)

client 端的秘钥与 server 端的秘钥生成一样, 这里就不叙述了, 想体验的朋友自己按照上一步操作再做一遍即可.
over, 以上就是使用私钥 + 公钥进行 HTTP 接口安全设计的简单上手示例.

个人觉得, 能把这个私钥公钥的搞明白了, 其他的几个接口安全设计也就不在话下了, 基本看一下流程图就能了然于心了. 这里就放出参数安全设计的流程图, 具体代码就不写了, 有兴趣的可以尝试着做一下.

为了方便练习的盆友快速理解, 那就顺带提几个需要注意的点吧.

在做:“接口参数签名 + 时效性验证(更加安全)” 时, 注意服务端返回的签名就不需要再传时间戳了, 理应是要传的, 但是一般很少有人这么做. 不过, 要不要这么做, 也得看公司的要求嘛.

在拼装秘钥的时候, 注意字符串首先得进行排序, 不管是升序还是降序, 亦或是其他的顺序(比如公司要求的顺序), 如果不先按照一个约定的顺序进行排序, 那么势必会造成客户端与服务端参数的字符串排列顺序不同, 致使无法验证成功. 这里就提供一个简便的排序工具, 并且使用 MD5 进行 16 进制加密

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4N5sHfTm-1670570282845)(HTTPS://hjs-1251193177.cos.ap-shanghai.myqcloud.com/web/api-sign1.png)]

2. 心脏出血漏洞(Heartbleed)

2.1. 检测是否存在 Heartbleed 漏洞

2.1.1. 通过命令行工具查看

通过 openssl version 命令查看 openssl 版本不一定可靠, 为啥? 因为有些组织自己就有 patch, 而没有用官方的 patch, 比方说 RedHat/CentOS, 自己单独提供 patch 的, 版本号可能是还是那个版本号, 可分支已经发生变化了, 但是 rpm 包专门提供了漏洞查询接口:

# rpm -q --changelog openssl | grep CVE-2014-0160
- fix CVE-2014-0160 - information disclosure in TLS heartbeat extension 

如何提示有上面的 fix CVE-2014-0160 说明是已经安装了补丁的, 如果没有该行提示说明没有打上安全补丁、存在漏洞风险。

# openssl version -a

2.1.2. 通过在线检测网站

  • https://sslanalyzer.comodoca.com/heartbleed.html
  • http://heartbleed-checker.online-domain-tools.com/

2.2. 修复 Heartbleed 漏洞

升级至 openssl 最新版即可, 用系统里面的软件包管理工具就成, 这个漏洞太有名、影响太大了, 所有系统企业都会对它进行升级的。

  • RedHat/CentOS: # yum update openssl(建议用官方的这个, 不要下载使用第三方的 rpm 包, 有风险!)
  • Debian/Ubuntu: # apt-get install openssl(会提示升级)

Critical: Restart Services or Reboot

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Ecology9是一个能够提供极致的生态系统建设的工具,它可以依托于现有的业务系统或资源,以确保企业的数据完整性和安全性。该工具支持调用外部接口,使企业能够更加灵活地集成现有数据或方案。 首先,Ecology9的API(应用程序接口)是开放的,它无任何限制地提供数据交换和通信。这意味着Ecology9可以轻松地访问外部系统和应用程序,从而从中收集数据或执行特定的任务,而不需要开发额外的模块或应用程序。 其次,通过API,Ecology9可以快速地实现与外部系统的互操作性。例如,它可以将数据从第三方应用程序中导入,同时它还可以将其自身的数据导出到另一个系统或环境中。此外,Ecology9可以与其他智能系统(如IoT设备或机器学习模型)集成,以便更好地管理和分析生态系统的数据。 最后,作为一个多功能的生态系统建设工具,Ecology9支持广泛的技术框架和语言,使它可以更加灵活地部署和执行。同时,Ecology9的使用和调用外部接口也非常容易,企业可以轻松地掌握其使用方法,从而根据自身的需求,进行定制化的开发和实现。 ### 回答2: 生态学语言中,ecology9 是一个用于进行生态学分析的 R 软件包。这个软件包中提供了多种函数和工具,用于生态系统的建模、统计分析和 绘图。除了这些内置的功能,ecology9 也支持与外部接口的交互,以便更好地支持生态学分析的需要。 调用外部接口是指使用已存在的其他软件包或者编写的自定义函数,以拓展ecology9 的功能。在生态学中,许多计算方法和工具已经被其他软件包实现,因此调用这些软件包可以方便地进行复杂分析。例如,R语言中有很多流行的生态学软件包,例如vegan、 BiodiversityR、adegenet、poppr等。这些包提供了各种生态学分析的方法包括生物多样性的计算,群落分析和遗传分析。通过使用ecology9的外部接口,用户可以轻松地将这些软件包的功能与ecology9的分析结合起来,从而最大化分析的效益。 总之,ecology9调用外部接口使得生态学家可以更高效地进行生态学分析。通过使用其他生态学软件包的功能,可以更准确地解释生态系统的现象,进一步深入研究生态学领域。 ### 回答3: Ecology9是一个企业级的生态系统管理平台,它的核心功能是管理企业的资源与流程,为企业提供全面的和可持续的发展支持。为了更好地实现这个目标,Ecology9调用了一些外部接口来补充其自身的功能。 首先,Ecology9使用外部接口来获取企业的相关数据,比如产品库存、销售数据、财务数据等等。这些数据是企业管理和决策所必需的,通过调用外部接口,Ecology9可以获取这些数据,并将其整理成易于查询和分析的格式,为企业提供更好的数据支持。 其次,Ecology9还调用外部接口来扩展其自身的功能,比如集成人力资源管理系统、客户关系管理系统等等。这些系统都有着自己的特点和优势,通过集成到Ecology9中,可以让企业在多个方向上获得更多的资源与服务。 最后,Ecology9调用外部接口来提高其平台的可用性和安全性。比如,它可能使用第三方的身份验证服务来确保用户的身份和权限,使用CDN服务来实现快速缓存和数据传输等等。这些服务都能够让企业更高效地使用Ecology9平台,同时也保障了用户的信息安全和秘密性。 总之,Ecology9调用外部接口是为了更好地满足企业的需求,这些接口可以从多个方向上扩展和完善Ecology9平台的功能,让企业在日常经营和发展中获得更多的支持和帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云满笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值