3

我有一个 REST 资源,其中包含 GET“屏蔽”敏感数据,例如此 API 由应用程序 UI 使用

获取 /api/客户

{
"Name":"John"
"AccountNumber" :"XXXXX123"
}

该客户 API 反过来通过另一个 REST API 调用记录系统。记录 REST 调用的系统非常昂贵并且支持非常低的 TPS。所以我们不能频繁使用当客户做一个动作的时候,帐号必须要传给另一个资源 POST /api/transactions

Input
{
  "AccountNumber":"XXXXX123"....
}

Output
{
  "transaction":"something"....
}

记录系统无法理解被屏蔽的 AccountNumber。所以我能想到的选择是——

  • 在服务器会话中设置未屏蔽帐户,并将密钥和已屏蔽帐户传递给客户 API 的前端。前端调用事务API时会传递key
  • 使用服务器缓存而不是服务器会话
  • 使用客户标识符密钥加密帐号,SALT(如反向代理在每个请求中注入的客户属性)将加密的帐号传递给前端。在客户操作时,前端会将加密的帐号传递给后端。后端将解密该字符串并提取帐号和客户标识符,并将客户标识符与反向代理注入的客户标识符匹配。

选项 1 和 2 绝对是糟糕的设计。我倾向于选项 3。

此类要求的成熟模式是什么?

4

0 回答 0