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/