【问题标题】:Possible security concerns with subscription handling in my Wix site?我的 Wix 站点中的订阅处理可能存在安全问题?
【发布时间】:2020-12-23 19:22:54
【问题描述】:

我目前正在开发的 Wix 网站安装了定价计划应用,根据这些计划,用户可以通过我正在开发的应用访问我在网站上公开的某些 API 功能。由于我无法在 http-functions.js 文件中检索用户对象,因此我不得不创建一个单独的集合来存储有关用户订阅的数据。订购计划后,这可以正常工作,因为我可以挂钩 onPlanPurchased 事件并在那里执行我需要的任何逻辑来修改所述集合。但是,不存在取消计划的此类事件,这意味着对集合的任何修改都必须通过从客户端代码调用的后端函数来完成,例如:

cancelPlan(wixUsers.currentUser.id)
.then( (results) => {
    if (results === "SUCCESS") {
        wixPaidPlans.cancelOrder(orderId)
        .then( () => {
            wixWindow.openLightbox("PlanCancelled");
        })
        .catch( (err) => {
            wixWindow.openLightbox("PlanCancelFailed");
        });
    }else {
        wixWindow.openLightbox("PlanCancelFailed");
    }
})
.catch( (err) => {
    wixWindow.openLightbox("PlanCancelFailed");
});

正如您所看到的,这里的问题是,由于它是在浏览器中运行的,是否有人可以修改它并只运行 wixPaidPlans.cancelOrder() 行而不运行我的后端函数?如果是这样,有人可以取消他们的付款,但仍然可以通过我谈到的 API 功能访问我的网站提供的东西。我担心这个是正确的吗?如果是这样,是否有人对我还能如何解决这个问题有任何指示?谢谢。

【问题讨论】:

  • cancelPlan() 方法是否以某种方式与您的后端通信?
  • 是的,我的 cancelPlan() 方法位于后端模块中,用于修改我的集合中的数据。如果用户记录更新成功,则返回“SUCCESS”消息。
  • 在服务器端进行验证以确保端点不会受到恶意攻击
  • 我无法在服务器端进行验证,因为“wixPaidPlans.cancelOrder()”似乎只能访问客户端并且只能由用户发起,那么我需要一些方法来检查是否已成功修改集合。还是我误解了你的建议?

标签: javascript client-side velo


【解决方案1】:

不久前我忘记了这个问题,但我想更新它,因为我最终找到了解决方案。

Wix 有几个 webhook,可用于指向您网站上的 API/HTTP 函数。这些 webhook 之一是当一个支付计划被取消时,这个事件可以指向 http-functions.js 中的一个函数,并且可以在那里完成相关的逻辑,确保一切都可以按预期执行,但过程也可以由用户启动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 2015-10-10
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    相关资源
    最近更新 更多