【问题标题】:Is a Plaid access token a secret?Plaid 访问令牌是秘密吗?
【发布时间】:2017-03-21 07:09:56
【问题描述】:

Plaid Link API documentation 表明成功的 Plaid 链接的结果会返回具有以下属性的 public_token

一旦用户通过 Plaid Link 成功登录,该模块将 提供一个public_token。这与典型的 Plaid API 形成对比 请求,返回一个 access_token。

在应用程序或浏览器中公开是安全的

不能用于直接检索帐户和路由号码(用于身份验证)或交易(用于连接)

可以通过以下方式兑换格子 access_token /exchange_token 端点。

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

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

【问题讨论】:

    标签: security plaid


    【解决方案1】:

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

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

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

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

    此时,您需要问自己,为什么首先要公开access_token?客户 ID 是公共信息,因此您依赖于您的 secret 不会被公开的事实。如果您的秘密曾经暴露并且您的access_tokens 已经被视为公开,那么所有用户的所有银行信息都将被暴露。

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

    【讨论】:

    • 我不再在 Square 工作,所以我无法访问我关于这个主题的电子邮件,但我记得收到了来自 Plaid 工程师的完全相反的回复,所以我很好奇了解困惑在哪里。我认为我们都在假设访问令牌绑定到特定客户端(因此是秘密的)的情况下进行操作。您的评论表明情况并非如此。这是否意味着我可以将我的客户端创建的访问令牌与其他人的客户端密码一起使用?
    猜你喜欢
    • 2011-12-31
    • 2012-04-28
    • 1970-01-01
    • 2021-02-01
    • 2012-12-29
    • 2011-03-18
    • 2016-06-10
    • 2012-10-27
    • 1970-01-01
    相关资源
    最近更新 更多