Можно ли доверять «контексту» из вызываемых по HTTPS облачных функций? - PullRequest
0 голосов
/ 10 мая 2019

Я использую Cloud Functions для обработки чтения / записи в Cloud Firestore на стороне сервера. Облачные функции запускаются клиентами в веб-приложении с использованием вызываемой функции HTTPS.

При вызове облачных функций с использованием HTTPS существует параметр, отправляемый клиентом из вызова «context», который несет информацию об аутентификации пользователя. Например, облачные функции на сервере могут выглядеть так:

// Saves a message to the Firebase Realtime Database but sanitizes the text by removing swearwords.
exports.addMessage = functions.https.onCall((data, context) => {
  // ...
});

Однако, так как context передается клиентом, и клиент может передавать манипулированный токен ID, нужно ли мне всегда выполнять проверку токена ID, прежде чем доверять и использовать что-то вроде context.auth.uid для взаимодействия с моей базой данных

Я имею в виду проверку токена ID:

// idToken comes from the client app
admin.auth().verifyIdToken(idToken)
  .then(function(decodedToken) {
    var uid = decodedToken.uid;
    // ...
  }).catch(function(error) {
    // Handle error
  });

По сути, я хочу знать, выполняет ли Firebase автоматическую проверку идентификатора ID при передаче context с использованием вызова https, и поэтому я могу продолжать и полагать, что если клиент манипулирует context, вызов https не будет выполнен из-за токена проверка не пройдена. Или мне нужно явно выполнять ручную проверку токена идентификатора на сервере каждый раз, чтобы проверить целостность context, поскольку клиент может легко вставить манипулированный токен с помощью devtools браузера или чего-то в этом роде.

1 Ответ

1 голос
/ 10 мая 2019

Да, идентификационный токен автоматически включается в запрос и проверяется в функции. Вам не нужно писать код для проверки токена при использовании вызываемых функций.

...