使用 webhook
您无需定期对安装了应用的商店进行 API 调用,而是可以使用 Webhook 订阅接收有关该商店中发生的特定事件(例如客户创建购物车时)的通知。订阅 Webhook 后,您可以将应用配置为立即执行代码以响应该事件。
如何使用Webhook
本《GraphQL 入门》综合教程逐步介绍了整个过程,以便您可以按照自己的节奏构建应用程序。
亚马逊 EventBridge
如果您的用户推出备受期待的产品或进行限时抢购,扩展您的应用以接受不断增加的 Webhook 流量可能会很困难。您的应用基础架构可能会不堪重负,并导致用户的应用体验不佳。Shopify EventBridge 集成允许您的应用使用事件总线接收 Shopify Webhook,这样您的技术堆栈就不会不堪重负。
EventBridge 具有无服务器、事件驱动的架构,可以帮助您降低基础设施成本,同时仍允许您扩展以管理更多的 webhook 流量。
访问我们的开发者文档,了解如何设置事件源并使用 EventBridge 管理事件。
Shopify OAuth服务会验证用户是否安装了您的应用,并将其重定向回您的应用。然后,您的应用会存储用户的信息并将其链接到会话 cookie,这样以后的交互就无需 OAuth 即可进行。
但最近,为了应对用户的隐私问题,浏览器已开始屏蔽或逐步淘汰第三方 cookie,这可能会给嵌入式应用程序带来问题,包括加载延迟和加载失败。这可能会导致糟糕的用户体验。尽管浏览器供应商并没有试图屏蔽 Shopify 或其嵌入式应用程序,但支持这些应用程序的技术非常相似,以至于浏览器无法充分区分,应用程序也陷入了打击的泥潭。
加载速度过长和可靠性问题会让您的用户感到沮丧,并阻碍您的应用获得关注。越来越多地限制第三方 Cookie 的 Web 浏览器只会恶化您的用户体验。没有人愿意等待 10 秒钟才能加载他们的应用或看到无法加载应用的错误消息。
为了解决这个问题,Shopify App Bridge " data-uxify-selector="div#primary > div:nth-of-type(2) > div > div > div > div:nth-of-type(2) > p:nth-of-type(145) > span > a" data-asw-orgfontsize="20">Shopify App Bridge 可以加快身份验证速度并改善用户体验。它还允许您直接在 Shopify Admin 和Shopify POS中构建嵌入式应用程序。
会话令牌不使用 Cookie,而是对嵌入式应用进行身份验证。当您的应用为用户加载时,它需要经过身份验证过程。加载前端代码后,它可以调用Shopify App Bridge操作来获取所需的JSON Web 令牌(JWT),这最终允许您的后端验证请求是否有效。JWT 的加载速度也是基于 Cookie 的解决方案的两倍以上,具体取决于框架。
如何构建 Shopify 应用:使用会话令牌的身份验证流程的屏幕截图。Shopify 发送请求以加载应用。应用后端加载骨架。应用前端创建 App Bridge 客户端并从 App Bridge 请求会话令牌。App Bridge 将会话令牌返回给应用。应用前端请求数据并从后端传递会话令牌。应用后端验证会话令牌的真实性并将数据返回给前端。前端从后端接收数据。
使用会话令牌的身份验证流程。
确保应用程序安全
要构建成功且可扩展的应用,将应用安全放在首位至关重要。安全编码和出色的数据卫生将有助于防止数据泄露并赢得应用用户的信任。
当您的应用与商家商店交互时,它可能需要访问商家和客户的个人身份信息 (PII)。这是一个巨大的责任 — 在应用安全方面,您不能“设置后就忘记”。
好消息是,您可以采取一些措施来确保您的应用和您自己的基础设施是安全的。以下是一些需要牢记的重要注意事项:
OWASP 前 10 名
开放式 Web 应用程序安全项目 ( OWASP ) 是一个致力于提高软件安全性的非营利基金会。
OWASP Top 10是一份面向开发人员的标 阿富汗 WhatsApp 数据 准 Web 应用程序安全意识文档,其中概述了一些最关键和最知名的应用程序安全风险。当您仔细检查应用程序是否存在在发布前可以轻松修复的常见漏洞时,此列表是一个很好的起点。
定期安全检查和维护
启动Shopify 应用后,通过定期维护和安全检查确保应用安全将有助于最大限度地降低用户和基础设施面临的风险。以下是您可以定期执行的几项任务,以确保应用在发布后的安全:
管理开放端口:仔细检查应用程序主机上开放了哪些端口,并问问自己是否需要开放这些端口。当存在漏洞时,例如侦听端口的服务未打补丁、配置错误或网络安全规则较差时,开放端口可能会被利用。开放端口越少,攻击面就越小。
跨站点脚本:确保用户控制的输入永远不会被渲染成未净化或未转义的。
SQL 注入:确保用户控制的输入永远不会直接用于数据库查询;考虑使用准备好的语句。
不安全的直接对象引用(IDOR):确保您的用户访问范围将记录的访问权限仅限于经过身份验证的所有者。
Cookies:确保您使用安全标志并考虑添加SameSite =Lax。如果您的 JavaScript 不需要访问 cookies,请添加 HTML-only 属性。
基于云的存储:如果您使用基于云的文件存储,例如 Google Cloud Platform 存储桶,请检查访问权限以确保它们不可公开访问。
定期检查您的 DNS 记录:如果您使用任何需要 DNS 配置条目的第三方服务,请定期检查这些记录以确保您没有留下指向无人认领的服务帐户的条目。
请求验证:当收到来自 Shopify 的任何请求(例如 webhook、确认安装)时,请确保验证请求的 HMAC 签名以验证请求来自 Shopify。
定期检查和维护将有助于防止您的应用出现可预防的风险和漏洞。但您总能做得更多。
考虑在您使用的任何 SaaS 或第三方服务上添加双因素身份验证 (2FA) 或多因素身份验证 (MFA),以保护您客户的数据和您自己的数据。
应用程序开发人员 Maël Valma 表示,为您的应用程序增加额外的安全级别不仅可以建立用户的信任,还可以保护您免受潜在的侵害。
“我特别关注数据库的安全性。我使用多因素身份验证来访问我的数据库,并且还使用受限网络访问功能来隔离我的数据库,”Valma 说。“我还会确保运行一些自动备份。”
我特别关注数据库安全。我使用多因素身份验证来访问数据库,还使用受限网络访问功能来隔离数据库。