security - Plaid 访问 token 是 secret 吗?

标签 security plaid

Plaid Link API documentation指出成功的 Plaid 链接的结果返回具有以下属性的 public_token:

Once a user has successfully onboarded via Plaid Link, the module will provide a public_token. This is in contrast to typical Plaid API requests, which return an access_token.

Is safe to expose in an app or browser

Cannot be used to retrieve account and routing numbers (for auth) or transactions (for connect) directly

Can be exchanged for a Plaid access_token via the /exchange_token endpoint.

据推测,这与 access_token 形成对比,这意味着 access_token 是一个 secret 。然而,据我所知,every Plaid endpoint采用 access_token 的方法还需要客户端的 ID 和 secret 值。

假设 secret 实际上是保密的,公开访问 token 在理论上是否安全?如果没有,我错过了什么?如果是这样,公共(public) token 有什么意义?

最佳答案

您的假设是正确的,access_token 应该保密。

公开access_token 的唯一原因是要么向用户显示该信息(没有理由这样做),要么向客户端提供信息以便稍后将其发回(例如与用于身份验证的 OAuth token 一样)。

但是如果您公开了 access_token,这意味着您的 API 期望用户在请求信息时发送他们自己的访问 token 。您的 API 信任该用户输入。如果用户获得了对另一个用户的 access_token 的访问权限,他们可以将其发送到您的 API,并获得对另一个用户帐户的访问权限。

为了防止这种未经授权的访问,您需要跟踪哪个用户可以访问哪些 token ,并且您必须根据任何请求对其进行验证,以确保没有未经授权的访问。

到那时,您需要问问自己,为什么首先公开 access_token?客户端 ID 是公开信息,因此您可以相信您的 secret 不会被公开。如果您的 secret 被泄露,并且您的access_tokens 已被视为公开,那么所有用户的所有银行信息都将被泄露。

为确保您的用户数据尽可能安全,切勿将 access_token 提供给最终用户。

关于security - Plaid 访问 token 是 secret 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40473684/

相关文章:

javascript - 每个 Plaid transaction_id 都是唯一的吗?

javascript - 我如何通过 Ember 中的脚本标签提供第三方 js 库?

php - 使用 PHP 回显 JSON 响应

python - Django 中存储用户上传的文件的位置

javascript - 选择器在我的网站上解释为 HTML。攻击者可以轻易利用它吗?

ios - 为 json rails 调用禁用 csrf token 安全安全吗?

plaid - 什么是实时凭证?

Plaid.com 此项目的登录详细信息已更改(凭据、MFA 或所需的用户操作)

java - 升级 JRE 1.7 后小程序复制/粘贴不起作用

java - MS SQL服务器: Securing column level data