背景和目标

https 能够支持接口安全传输,但在 web 场景下,用户通过 F12 控台可以轻松获取请求的参数和响应结果,这可能被黑客利用,从而破解接口并进行非法利用。

所以本文的目标是:提供一种对数据请求/响应数据的加解密方案,增加破解门槛,提高接口安全性。

此方案将参考 https 基于 RSA + AES 的加密思路。

方案规划

加密

 

https 基于 RSA + AES 的加密方案,方案的大致流程是:

  1. TLS 握手,使用 RSA 交换 AES 会话密钥

  2. Client 使用 AES 会话密钥加密 HTTP 请求

  3. Server 使用 AES 会话密钥加密 HTTP 响应

该方案会参考 HTTPS 的加解密流程。

签名

通过对请求参数和 RSA 公钥执行摘要算法,可以得到一个签名 sign,server 可以通过 sign 验证数据包是否被篡改,签名是保证接口安全性的一个必要环节。

基本上签名可由以下参数构成:

client 将这些参数按照固定顺序拼接并通过诸如 md5、sha 等摘要算法生成 sign,server 以同样的方式生成 sign',并比较是否和 sign 一致从而达到验签的目的

核心流程

RSA 钥匙对管理