# #node.js #firebase #express #google-cloud-functions
Вопрос:
У меня есть облачная функция, которую я хочу вызывать только тогда, когда запросы исходят из моего домена.
export const createMatch = functionUS.https.onCall(async (data, context) => {
if (context.auth === null || context.auth?.uid == null || data?.userId !== context.auth?.uid)
throw new functions.https.HttpsError("unauthenticated", "not authenticated");
try {
const user = await admin.auth().getUser(context.auth.uid);
if (!user.displayName) throw new functions.https.HttpsError("failed-precondition", "username is missing");
data.username = user.displayName;
const matchRepo = new MatchRepository(new FirestoreMatchProvider("matches"));
const match = Match.fromMap(new Map<string, any>(Object.entries(data)));
if (!match.isValid()) throw new functions.https.HttpsError("failed-precondition", "match data is not valid");
await matchRepo.createMatch(match, context.auth.uid);
} catch (error) {
functions.logger.error(`handleMatchCreate: ${error}`);
}
});
Я заметил, что в express есть опция имени хоста, которую я могу взять из контекста, но это всего лишь заголовок для имени хоста. И из того, что я прочитал, это может быть подделкой. Есть ли у меня какой-либо способ узнать, исходили ли запросы из моего домена?
Потому что кто-то мог бы заглянуть в код, получить мою конфигурацию firebase и создать для себя приложение, которое просто отправляет запросы, когда захочет. А это не то, чего я хочу.
Ответ №1:
Это часть протокола HTTP, вы не можете его изменить. Просто не полагайтесь на сетевой уровень (DNS и IP). Ты не можешь сделать большего