Недавно я решил разработать веб-приложение о раздаче учетных записей для игры (мета-сообщества) и выбрал Parse в качестве моего бэкэнд-сервиса. Я был новичком в сетевой безопасности. Сначала я реализовал всю аутентификацию как переменную в клиентском коде и вскоре понял, что могу легко их обойти.
Затем я переместил каждый шаг аутентификации в Cloud Code, настроил CLP и ACL. Теперь клиент отвечает только за сбор данных, размещение их в качестве параметров и вызов облачных функций и, наконец, получение ответа и его представление. Все это было достигнуто с помощью чистого JavaScript (как клиентского, так и облачного кода).
Теперь перейдем к другой части: PHP. Мой друг всегда советовал попробовать работать с PHP вместо этого. У меня также есть свой собственный выделенный сервер, который поддерживает PHP (а также базу данных SQL, но мы не будем вдаваться в подробности). Теперь я действительно осведомлен, поскольку знаю о некоторых ограничениях облачного кода (например, ограничение по времени выполнения).
Итак, мой вопрос: что PHP и Cloud Code могут сделать, чего не может другой, и должен ли я слишком волноваться по поводу одного из них? Кроме того, если вы используете Parse, какую ответственность вы часто возлагаете на PHP и Cloud Code?
РЕДАКТИРОВАТЬ: код не очень актуален, но я постараюсь привести несколько примеров. Это сегмент кода на стороне клиента:
$('#login').click(function () {
FB.login(function (response) {
if (response.status == 'connected') {
Parse.Cloud.run("facebookAuth", fbResponse.authResponse, {
success: function (response) {
console.log("User logged in through Facebook!");
Parse.User.become(response.sessionToken).then(function (loggedUser) {
// The current user is now set to user.
console.log("facebookAuth: Authentication completed.");
activityLog("User logged in through Facebook!");
}, function (error) {
// The token could not be validated.
console.log("The token could not be validated.");
activityLog("An error has occurred: " + error);
});
},
error: function (error) {
console.log(error);
activityLog("You need to be a group member to use the application!");
Parse.User.logOut();
}
});
}
});
});
Это Облачные Функции для них:
Parse.Cloud.define("facebookAuth", function (fbAuthRes, response) {
// I implement the Facebook authentication here.
// If user is logged into Facebook (and is member of my group), then the user is logged in then:
response.success({user: user, sessionToken: user.getSessionToken()});
// The full code is too long.
}
Задача ещё не решена.
Других решений пока нет …