You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

后端通过REST API向前端安全传输敏感信息的架构方案咨询

解决REST API敏感信息传输的加密难题

核心误区修正

你搞反了RSA的正确使用姿势:应该由前端生成公私钥对,而非后端持有公钥、前端存私钥。前端私钥完全不需要持久存储或通过网络传输,只需要在内存中临时持有,就能解决你担心的私钥泄露问题。

可行的实现方案

  • 前端动态生成密钥对:使用浏览器原生的Web Crypto API生成RSA密钥对,示例逻辑如下:
    // 生成RSA密钥对(仅在内存中)
    const keyPair = await window.crypto.subtle.generateKey(
      {
        name: "RSA-OAEP",
        modulusLength: 2048,
        publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
        hash: "SHA-256",
      },
      true,
      ["encrypt", "decrypt"]
    );
    // 导出公钥传给后端
    const publicKey = await window.crypto.subtle.exportKey("spki", keyPair.publicKey);
    
  • 后端用公钥加密:后端接收前端传来的公钥,用它加密敏感数据后返回。公钥本身是公开的,明文传输完全没问题。
  • 前端内存解密:前端用内存中的私钥解密返回的加密数据,使用完成后可以主动销毁密钥对,避免内存残留。

关于你提到的几个疑问

  • 单独端点获取私钥不可行:私钥一旦通过网络传输,哪怕是单独请求,本质和明文传输敏感数据没有区别,中间人拦截后一样能拿到私钥,完全失去加密意义。
  • 明文传输敏感信息的实践:那些场景必然是基于HTTPS的。HTTPS的TLS协议已经在传输层做了端到端加密,能有效防止中间人窃听、篡改,这是敏感数据传输的基础保障。如果你的应用已经启用HTTPS,大部分场景下不需要额外做应用层加密;如果有更高安全要求,再结合上面的RSA方案即可。

额外安全建议

  • 前端私钥永远不要存在localStorage、cookie或其他持久化存储中,仅保留在内存里,页面刷新后重新生成。
  • 敏感数据解密后,及时从变量中清除,减少内存泄露风险。
  • 后端要对公钥进行合法性校验,避免接收恶意构造的公钥导致安全问题。

内容的提问来源于stack exchange,提问作者VitaminD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:37:15