shopify - Shopify - 发出 API 请求以更新用户的电子邮件
问题描述
使用 Shopify Admin API - 我已经能够更新用户的电子邮件地址。
我已经用 Postman 对其进行了测试,并传入了一个私有应用程序密钥。
现在我想在实际页面上有这个功能但是有一些问题:
- 我不能像任何人看到的那样将这些私有应用程序密钥完全存储在页面本身的 JS 代码中。我也不能用它发送请求,因为任何人都会有可见性。
- 是否可以创建某种中介,我可以在其中创建某种端点,例如
POST /update/useremail
通过客户 ID 发送 - 如果上述是可能的 - 我不确定如何避免任何随机的人点击该端点并更新其他用户的电子邮件地址。
有没有人有任何经验/想法/建议可以简单地做到这一点?
任何帮助表示赞赏。
谢谢。
解决方案
问题:您的问题是要验证电子邮件更改请求是否是有效呼叫?然后,如果您发现它有效,那么您可以调用 API 来更新它。
我的解决方案
在 Shopify 中使用您的表单创建一个页面以更新电子邮件。仅向登录用户显示页面。当用户登陆页面时,向他们显示表单以传递他们想要的新电子邮件。您需要在此处添加一些内容以验证请求。当页面加载时,从 Shopify 后端创建一个散列字符串,如下所示。
{% if customer != nil %}
{% assign timestamp = 'now' | date: "%s" %} //epoch time stamp
token = {{ customer.email | append: '<random_string>' | append: timestamp | sha256 }}
{% endif %}
每当请求更改电子邮件时,通过在您的服务器上创建一个哈希来验证您最后的 SHA256 代码。如果哈希有效,则更新电子邮件。确保在您提出的请求中传递时间戳和旧电子邮件。
您需要注意的安全问题 -
- 您需要始终验证时间戳例如。它不应该是未来的 10 秒或过去的 10 秒。
- 您的随机字符串也可以被暴力破解。因此,请使用 Assets API 定期更新随机字符串。这是非常不可能的,但为什么要冒险。
推荐阅读
- checkbox - 我正在尝试减少网格中的复选框宽度但无法减少
- opengl - 如何在 glfw3 中使用 glut 原语?
- java - 如何使用 MaterialShapeDrawable 模仿 MaterialCardView 的视觉效果
- javascript - 如何在 dhtmlx 甘特图中设置日期、年份等行的自动高度
- python - 我如何查看某人的余额?
- python-3.x - 使 if 语句不关心大小写
- reactjs - 从 graphql 获取数据以做出反应
- c++ - C++ 模板和函数重载
- c# - 状态 Epilog 中的令牌 StartElement 将导致无效的 XML 文档
- selenium - 要求硒 *find_element_by_class_name