Документация по firebase https://firebase.google.com/docs/web/setup говорит нам, что мы можем безопасно выставлять firebase apiKey:
Примечание: Объект конфигурации Firebase содержит уникальные, но не секретные идентификаторыдля вашего проекта Firebase.
В этом руководстве объясняется, как получить apiKey и вставить его в HTML-код нашего веб-приложения.Каждый может прочитать этот ключ.Я бы понял, это только идентификационный ключ.
Но недавно я получил это сообщение от Google:
Мы обнаружили общедоступный ключ API Google, связанный со следующим проектом Google Cloud Platform:
[...]
Ключ был найден по следующему URL:
[...]
Мы считаем, что вы или ваша организация могли случайно опубликовать уязвимый ключ APIв общедоступных источниках или на общедоступных веб-сайтах (например, учетные данные, ошибочно загруженные в службу, такую как GitHub.)
Обратите внимание, что как владелец проекта / учетной записи вы несете ответственность за защиту своих ключей.Поэтому мы рекомендуем предпринять следующие шаги для исправления этой ситуации:
- Если этот ключ предназначен для публичного использования (или если общедоступный ключ не может быть предотвращен): Войдите в GoogleCloud Console и проверьте API и платежную активность в вашей учетной записи, чтобы убедиться, что использование соответствует ожидаемому.Добавьте ограничения ключа API к своему ключу API, если применимо.
- Если этот ключ НЕ предназначен для публичного использования: восстановите скомпрометированный ключ API: найдите учетные данные в платформе облачной консоли, отредактируйте утечку ключа и используйтекнопка Восстановить ключ, чтобы повернуть ключ.Для получения более подробной информации ознакомьтесь с инструкциями по обработке скомпрометированных учетных данных GCP.Предпримите немедленные шаги, чтобы гарантировать, что ваши ключи API не встроены в системы с открытым исходным кодом, не сохранены в каталогах загрузки или непреднамеренно не переданы другим способом.Добавьте ограничения ключа API к своему ключу API, если применимо.
В целом, я бы сказал, что два источника информации отличаются друг от друга.Правда ли, что apiKey "не секрет"?Читая также связанный с этим вопрос Безопасно ли показывать apiKey Firebase широкой публике? Я не совсем уверен.Я понимаю, что apiKey достаточно для доступа ко всей базе данных, если позволяют правила.
Первый вопрос: Интересно, могу ли я быть уверен, что apiKey предоставляет только доступ к базе данных (что может быть ограничено правилами) или же он также дает доступ к другой информации о проекте.Как насчет хранения?Пользователь может читать файлы?Можешь их написать?Ключ называется «ключ веб-API», поэтому я понимаю, что это уникальный идентификатор проекта.До получения сообщения от Google я считал его скорее идентификатором, чем ключом.Поскольку каждый доступ к API проекта является потенциальной стоимостью для меня, владельца проекта, я понимаю, что ключ необходим для выставления счетов.
Второй вопрос.Поскольку я хотел бы иметь полный контроль над тем, что пользователь может получить доступ к базе данных, мое приложение представляет REST API в качестве интерфейса к базе данных (с использованием функций).Таким образом, пользователь не должен иметь прямой доступ к базе данных.У меня есть следующие правила
service cloud.firestore {
match /databases/{database}/documents {
match /global/public {
allow read;
}
}
}
Предполагается, что пользователь может только читать документы с префиксом / global / public (в настоящее время пустые).Поэтому я думаю, что база данных защищена.Теперь мне интересно, действительно ли мне нужно выставить apiKey ... Требуется ли apiKey для аутентификации пользователя?Если да, могу ли я проигнорировать сообщение от Google и оставить общественности apiKey?