Skip to content

接口签名安全防护

WARNING

  • 我个人是偶然间打开web端抖音然后F12发现有rsa密钥对才开始通过配合ai研究的这套防护流程
  • 纯纯c端接口才会需要的东西,项目中加这个主要是感兴趣,实际项目中很少有接口需要这种程度的防护
  • 最主要可能就是像抖音那种防止爬虫或者脚本去爬接口,不过会逆向的或者懂行的这种程度的也是防不住的,毕竟一个F12一打开,web端没有什么秘密,前端总要有个地方去拼接sign,这部分代码在客户端就是裸奔的
  • 抖音实际的操作流程应该是比这个复杂很多,它们应该都自己的sdk封装,签名的部分应该会复杂很多很多,我这个只是一个很简单的复现,感兴趣的github上有开源项目
  • 有很多细节下面流程图中体现不出来,前端代码是完全开源的,感兴趣的可以看一下
  • 签名的部分内容可以有很多文章去做,我看了一下GitHub上的逆向开源项目后后续可能对签名的部分进行一些补充
mermaid
100%
100%

无 AES

有 AES

用户首次打开页面

setupSign 初始化

是否存在 clientKey

生成 clientKey 并写入 localStorage

生成 RSA 密钥对 私钥存储

发送 RSA 公钥到后端

请求 AES Key

前端使用私钥解密 AES

AES 获取成功 准备后续签名

后端保存 RSA 公钥到 Redis

后端检查 Redis 是否存在 AES

后端生成 AES Key

后端使用 RSA 公钥加密 AES

后端返回加密后的 AES

Redis 存储 RSA 公钥

Redis 存储 AES Key

基于 MIT 许可发布