Мой сайт ссылается на другие сайты. Когда пользователь переходит по ссылке на сайт, я хочу увеличить счетчик посещений для этого сайта.
Веб-сайты (и другие) находятся на конечной точке /resources
в моей базе данных. Он доступен для чтения публично, но не для записи.
Это означает, что пользователь, переходящий по ссылке, может не пройти аутентификацию.
Поэтому мне нужно написать облачную функцию, которая будет увеличивать свойство visits
любого посещенного веб-сайта.
Но поскольку при этом пользователи могут не пройти аутентификацию, я хотел бы защитить его, убедившись, что запрос исходит из моего собственного приложения.
Поскольку в моем приложении есть специальная конфигурация для Firebase, я надеялся, что смогу использовать ее для отправки чего-то, что позволит мне проверить, действительно ли это мое приложение отправляет запрос, чтобы люди не спамили конечную точку и не увеличивали количество посещений.
Это возможно ? Или мне нужно сделать так, чтобы только аутентифицированные пользователи могли запускать функцию?
Невозможно полностью защитить функцию, чтобы к ней можно было получить доступ только из вашего приложения. Кто-то всегда сможет перепроектировать любой «секрет», который вы передаете от неаутентифицированного пользователя вашей функции. Вы, конечно, можете попытаться помешать кому-либо раскрыть этот секрет, но решительный хакер сможет его найти.
Если вы используете вызываемые облачные функции, это является теперь возможно через Firebase App Check. См. Мой ответ здесь: stackoverflow.com/questions/60191410/…