Возможные проблемы с безопасностью при обработке подписки на моем сайте Wix?

#javascript #client-side #velo

#javascript #на стороне клиента #velo

Вопрос:

На моем веб-сайте 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, о которых я говорил. Правильно ли я беспокоюсь об этом? И если да, есть ли у кого-нибудь какие-либо указания на то, как еще я мог бы это сделать? Спасибо.

Комментарии:

1. этот cancelPlan() метод каким-то образом взаимодействует с вашим бэкэндом?

2. Да, мой метод cancelPlan() находится во внутреннем модуле и изменяет данные в моей коллекции. Если обновление записи пользователя прошло успешно, оно возвращает сообщение «SUCCESS».

3. Выполните проверку на стороне сервера, чтобы убедиться, что конечная точка не пострадала злонамеренно

4. Я не могу выполнить проверку на стороне сервера, поскольку ‘wixPaidPlans.cancelOrder ()’ кажется доступным только на стороне клиента и может быть инициирован только пользователем, тогда мне нужен какой-то способ проверить, прошла ли модификация коллекции успешно. Или я неправильно понял ваше предложение?

Ответ №1:

Некоторое время назад я забыл об этом вопросе, но хотел его обновить, так как в итоге нашел решение.

У Wix есть несколько веб-ссылок, которые можно использовать для указания на API / HTTP-функцию на вашем сайте. Один из этих веб-подсказок предназначен для отмены плана оплаты, это событие может указывать на функцию в http-functions.js и там может быть реализована соответствующая логика, гарантирующая, что все может быть выполнено так, как задумано, но процесс также может быть запущен пользователем.