Shopify应用访问令牌-如何使其更安全?

时间:2019-10-11 20:11:38

标签: shopify access-token shopify-app

当商店所有者安装我的应用程序时,我将访问令牌保存到数据库中以备后用。从商店获得访问令牌是巨大的安全责任,因为拥有这些令牌的任何人都可以从任何域/地址修改商店,没有ip或域锁定。

我可以使用哪种方法来使其更安全?我当时想离线保存令牌,然后仅在需要时上载令牌(以防万一我需要对所有商店进行一些全局更新),然后再次将其删除。如果商家访问管理员中的应用程序配置,我将其保存到会话中。有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

好问题。

我也将它们保存在数据库中,但是我使用与Shopify应用程序密码不同的密钥对它们进行编码。这样,即使某人由于后门进入而可以访问数据库,他也将无法使用它们。就是说,如果有人可以访问该代码,则由于他将可以访问该密钥,因此他将能够弄清楚如何对其进行解密。

那就是说,在显示服务器的任何响应之前,我确保每个请求都已通过身份验证。由于我将NodeJS用作后端,因此请确保没有可从其他商店访问或修改的全局变量。一切都巧妙地限制在单独的函数中,因此该会话的作用域是当前商店,而其他任何会话都不能弄脏其他商店的会话。

此外,我确保在客户端卸载其应用程序时会触发一个Webhook,以清除数据库中所有有关其商店评级的信息。

我知道有些人正在为此使用会话(在线方法),但是他们提出了我不喜欢的其他问题,因此我坚持使用数据库(离线),因为这是访问应用程序而不是多重重定向的更快方法为了保存会话。

关于提案,我可以为您提供一些在构建一些基本应用程序的过程中学习的技巧。 (无论如何我都不是这个问题的专家)

  • 涉及敏感信息时不要依赖任何cookie
  • 对来自前端的每个请求进行身份验证
  • 不信任用户并验证来自前端的任何输入
  • 不要让您的设置复杂化,尽管拥有高安全性是一件好事,但是如果这会使您的应用程序对用户缓慢,又使您失去客户,那将是很不好的
  • 寻找其他可以立即使用的流行解决方案,这些指南可以指导您正确的路径
  • 不要贪婪地使用App范围,只请求应用所需的范围
  • 请记住要尽可能地自己清理,但不要过度清理(太多的应用程序会修改客户的代码并破坏代码,以防止事后再清理它)示例使用ScriptTag API而不是液体使用Asset API的代码段。如果您必须使用Asset API,请仅添加不会破坏站点的已知部分。如果站点支持IE11,则创建变量是可以的,如果站点支持IE11,则不能使用varconst创建变量,或者可以使用let使用vanilla JS进行创建不知道该站点是否已全局安装该站点是不正确的。

有关此事的更多见解可以在这里找到:

https://help.shopify.com/en/api/getting-started/authentication/oauth/api-access-modes https://community.shopify.com/c/Shopify-APIs-SDKs/Best-way-to-store-shops-that-have-installed-my-app-and-their/m-p/402972