javascript - 保护 PHP 脚本 - Shopify

标签 javascript php ajax shopify

基本上我的问题与此类似:

How to secure php scripts?

有一点细微的差别,另一边是 Shopify。

背景信息: Shopify 用户购买了一些积分(Audible 风格),并想知道他有多少可用积分。他登录了自己的帐户,上面显示他有 X 积分。

这个数字来自对我的服务器的 AJAX 调用(我有完全的控制权),其中有一个简单的 php 脚本,它检查 db 中的值(使用 Shopify 的 webhooks 进行更新,每个都需要进行验证,以便它们我认为是安全的)。

该脚本使用客户 ID 进行查找,并且该值需要以某种方式传递给脚本,这允许外部人员继续运行它,直到他拥有所有 ID 和相应的积分值。

所以,我的问题是,我该如何阻止这种情况?如何确保只有经过身份验证的用户才能检查它,并且只能检查他们的 ID。

Shopify 文档中有大量有关以其他方式保护连接的信息,即确保只有正确的脚本才能访问 Shopify 数据库,但没有任何关于我的问题的信息。

据我所知,我只能访问 Shopify 上的 JS,这会产生问题,因为我发送到服务器的所有内容都对所有人可见。

谢谢

编辑:我刚刚阅读了 CSRF。我可以轻松地实现对来源和 header 的检查,但这些可以伪造,对吗?

编辑2:我通过使用元字段解决了这个问题。因此,我没有将所有信息存储在服务器的数据库上,而是使用客户元字段来存储可用的积分。 Webhook 是安全的,所以这太棒了。但仍然没有解决下一阶段的问题。客户仍然需要能够使用他们的积分并获得由我的服务器生成的数字产品。所以我仍然需要验证请求。

编辑 3:@deceze 的评论和 @Jilu 的回答让我思考。是的,您是对的,我需要这样做,但我无权访问 Shopify 的后端,因此无法创建 session 。然而,我能做的(如果我弄清楚如何在js中实现)就是对它进行哈希处理。 PHP 登录脚本对password_hash 进行操作。这样您就不会在数据库中存储密码。密码在数据库中再次验证哈希(或任何你所说的),它要么是真要么是假。如果为 true,则您已登录。因此,我可以尝试使用特定字符串(使其非常长)和用户 ID 生成 token 。将其与请求一起发送,并使用 password_verify 或其他方式,针对用户进行检查。弹出肯定信息的是请求该信息的登录用户。假设我可以在 Shopify 中隐藏该字符串...

最佳答案

Step1:做一个 session 登录系统。 步骤2:在Ajax之前,在表单或请求页面中生成一个随机 token ,将其放入输入显示none中,通过POST发送。 每次验证 token 是否已设置并且与您获得的相同。

您现在已经验证了用户是否确实通过 session 登录。 并且您检查过他来自正确的页面。

关于javascript - 保护 PHP 脚本 - Shopify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46216224/

相关文章:

javascript - 如何使用 jQuery(仅限 Firefox 问题)通过所有 <options> 旋转 <select> 字段

javascript - 如果未单击一组元素,如何触发事件

javascript - 如何设置 json 响应中的值到 php 和 javascript 中的 <p> 字段?

javascript - 增加和减少 jQuery slider ui 值一步

带有授权用户名的 jQuery 导航栏

php - 根据分辨率计算拇指数

使用 foreach 循环遍历数组两次并通过引用传递值的 php 问题

javascript - 中止所有异步请求

javascript - 解析从 Controller 收到的 Json

javascript - console.log 打印数据两次 [reactjs]