当商店所有者安装我的应用程序时,我将访问令牌保存到数据库中以备后用。从商店获得访问令牌是巨大的安全责任,因为拥有这些令牌的任何人都可以从任何域/地址修改商店,没有ip或域锁定。
我可以使用哪种方法来使其更安全?我当时想离线保存令牌,然后仅在需要时上载令牌(以防万一我需要对所有商店进行一些全局更新),然后再次将其删除。如果商家访问管理员中的应用程序配置,我将其保存到会话中。有更好的方法吗?
答案 0 :(得分:1)
好问题。
我也将它们保存在数据库中,但是我使用与Shopify应用程序密码不同的密钥对它们进行编码。这样,即使某人由于后门进入而可以访问数据库,他也将无法使用它们。就是说,如果有人可以访问该代码,则由于他将可以访问该密钥,因此他将能够弄清楚如何对其进行解密。
那就是说,在显示服务器的任何响应之前,我确保每个请求都已通过身份验证。由于我将NodeJS用作后端,因此请确保没有可从其他商店访问或修改的全局变量。一切都巧妙地限制在单独的函数中,因此该会话的作用域是当前商店,而其他任何会话都不能弄脏其他商店的会话。
此外,我确保在客户端卸载其应用程序时会触发一个Webhook,以清除数据库中所有有关其商店评级的信息。
我知道有些人正在为此使用会话(在线方法),但是他们提出了我不喜欢的其他问题,因此我坚持使用数据库(离线),因为这是访问应用程序而不是多重重定向的更快方法为了保存会话。
关于提案,我可以为您提供一些在构建一些基本应用程序的过程中学习的技巧。 (无论如何我都不是这个问题的专家)
var
或const
创建变量,或者可以使用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