【问题标题】:Persisting user banking data when pulling from Open Banking从开放银行中提取时保留用户银行数据
【发布时间】:2021-04-26 22:56:29
【问题描述】:

我目前正在构建一个通过 Plaid 使用 Open Banking 的应用程序。这是一个 React 前端应用程序,具有支持“后端”的无服务器功能。

目前,在每次页面加载时,都会通过 Plaid API 传输用户的访问令牌并提取银行数据。用户数据不会以任何方式持久化,并且会在用户离开页面时丢失。

不幸的是,这会消耗相当多的性能 - 这意味着每次用户在网站上导航时,每次页面加载都必须调用 API,即使数据刚刚加载,因此会导致 3/4 秒在每个页面上加载。很慢。

我注意到其他保存此类数据的“银行”应用程序似乎以某种方式将其持久化。这是否是通过 API 提取数据然后存储在加密数据库中,或者可能是提取并存储在本地存储中,我不确定..

所以我的问题是 - 从广义上讲 - 我持久化通过 API 提取的用户银行数据的最佳方式是什么?

我是否可以将其存储在每次用户“刷新”连接时更新的数据库中?也许每隔几个小时,或者点击“刷新”?

或者还有其他更适合我的方式吗?

希望这是有道理的,并且在正确的地方被问到。

【问题讨论】:

    标签: javascript database data-storage plaid open-banking


    【解决方案1】:

    因此,一般而言,在调用开放式银行 API 时,您不希望从客户端调用它 - 出于性能原因(正如您已经遇到的那样)和安全原因,因为您有暴露 API 机密的风险.这篇关于该主题的文章有一些方便的指导:keeping credentials secure when making API calls with JavaScript

    我们建议将数据加密并保存在数据库而不是本地存储中。 Plaid 文档在launch checklist 中也对此有所提及。

    刷新数据的确切机制取决于您使用的 API,但如果它类似于 Transactions,Plaid 可以发送 webhook 以在有新数据可用时提醒您,这样您就无需等待交互用户输入以刷新数据。

    【讨论】:

    • 感谢 Alex 的回复 - 非常感谢。不过,您对持久化数据有什么看法,所以不需要重复调​​用数据库/格子呢?您建议如何安全地执行此操作?
    • 另外 - 秘密永远不会暴露给客户端 - 它们安全地存储在环境变量中,并且仅在发出请求时在后端公开。
    • 我和几个同事谈过,他们的建议是 a) cookie,使用 httpOnly 和 CSRF 保护,或者 b) 仍然使用数据库。虽然当您有更好的选择时,我们一般不会推荐 localStorage,但考虑到您正在使用的架构,它可能是一个不错的选择。 This article 对保护 cookie 和 localStorage 有很好的了解,this Stack Overflow post 对 cookie/localStorage 的权衡有很好的了解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多