Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shopify应用程序访问令牌-如何使其更安全?_Shopify_Access Token_Shopify App - Fatal编程技术网

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

Shopify应用程序访问令牌-如何使其更安全?,shopify,access-token,shopify-app,Shopify,Access Token,Shopify App,当店主安装我的应用程序时,我会将access令牌保存到数据库中供以后使用。从存储访问令牌是一项巨大的安全责任,因为拥有这些令牌的任何人都可以从任何域/地址修改存储,没有ip或域锁 我可以用什么方法使它更安全?我想离线保存代币,然后只在需要时上传(以防我需要对所有商店进行一些全局更新),然后再次删除它。如果在管理员中进行商户访问应用程序配置,我会将其保存到会话中。有更好的方法吗?好问题 我也将它们保存在数据库中,但我使用Shopify应用程序密码中的一个单独密钥对它们进行编码。这样,即使有人因为某

当店主安装我的应用程序时,我会将access令牌保存到数据库中供以后使用。从存储访问令牌是一项巨大的安全责任,因为拥有这些令牌的任何人都可以从任何域/地址修改存储,没有ip或域锁

我可以用什么方法使它更安全?我想离线保存代币,然后只在需要时上传(以防我需要对所有商店进行一些全局更新),然后再次删除它。如果在管理员中进行商户访问应用程序配置,我会将其保存到会话中。有更好的方法吗?

好问题

我也将它们保存在数据库中,但我使用Shopify应用程序密码中的一个单独密钥对它们进行编码。这样,即使有人因为某种后门进入而可以访问数据库,他也无法使用它们。这就是说,如果有人能够访问代码,他将能够找出如何解密它,因为他将有权访问密钥

也就是说,在显示服务器的任何响应之前,我确保每个请求都经过身份验证。因为我使用NodeJS作为后端,所以我确保没有可以从不同存储访问或修改的全局变量。所有内容都在单独的函数中整齐地确定了作用域,因此会话的作用域是针对当前存储的,其他存储会话将无法脏化其他存储会话

此外,我还确保当客户端卸载他的应用程序时,会触发一个webhook,以便清除我的数据库中任何重新对其存储进行分级的信息

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

至于提案,我可以给你一些建议,这些建议是我在构建一些基本应用程序的过程中学到的。(无论如何,我都不是这方面的专家)

  • 当涉及到合理的信息时,不要依赖任何cookie
  • 验证来自前端的每个请求
  • 不要信任用户并验证来自前端的任何输入
  • 不要让你的设置过于复杂,虽然拥有高安全性是好的,但如果它让你的应用程序对用户来说速度变慢,并且你失去了客户,那就糟糕了
  • 寻找其他可以引导您走上正确道路的现成流行解决方案
  • 不要贪心应用程序范围,只请求应用程序所需的范围
  • 记得在可能的情况下自己清理,但不要过度清理(太多的应用程序修改客户代码并破坏它只是为了防止事后清理)。例如,使用ScriptTag API而不是使用资产API的液体片段。如果您必须使用AssetAPI,请只添加您知道不会破坏站点的部分。如果您正在使用
    var
    如果站点支持IE11,那么创建变量是可以的。使用
    const
    let
    创建变量是不可以的,或者使用vanilla JS是可以的,但是使用
    jQuery
    而不知道站点是否全局安装了它是不可以的
关于这一问题的更多见解可参见以下内容:

好问题

我也将它们保存在数据库中,但我使用Shopify应用程序密码中的一个单独密钥对它们进行编码。这样,即使有人因为某种后门进入而可以访问数据库,他也无法使用它们。这就是说,如果有人能够访问代码,他将能够找出如何解密它,因为他将有权访问密钥

也就是说,在显示服务器的任何响应之前,我确保每个请求都经过身份验证。因为我使用NodeJS作为后端,所以我确保没有可以从不同存储访问或修改的全局变量。所有内容都在单独的函数中整齐地确定了作用域,因此会话的作用域是针对当前存储的,其他存储会话将无法脏化其他存储会话

此外,我还确保当客户端卸载他的应用程序时,会触发一个webhook,以便清除我的数据库中任何重新对其存储进行分级的信息

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

至于提案,我可以给你一些建议,这些建议是我在构建一些基本应用程序的过程中学到的。(无论如何,我都不是这方面的专家)

  • 当涉及到合理的信息时,不要依赖任何cookie
  • 验证来自前端的每个请求
  • 不要信任用户并验证来自前端的任何输入
  • 不要让你的设置过于复杂,虽然拥有高安全性是好的,但如果它让你的应用程序对用户来说速度变慢,并且你失去了客户,那就糟糕了
  • 寻找其他可以引导您走上正确道路的现成流行解决方案
  • 不要贪心应用程序范围,只请求应用程序所需的范围
  • 记得在可能的情况下自己清理,但不要过度清理(太多的应用程序修改客户代码并破坏它只是为了防止事后清理)。例如,使用ScriptTag API而不是使用资产API的液体片段。如果您必须使用AssetAPI,请只添加您知道不会破坏站点的部分。如果您正在使用
    var
    如果站点支持IE11,那么创建变量是可以的。使用
    const
    let
    创建变量是不可以的,或者使用vanilla JS是可以的,但是使用
    jQuery
    而不知道站点是否全局安装了它是不可以的
更多关于