Я использую 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 браузера или чего-то в этом роде.