Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Включить проверку приложений с помощью reCAPTCHA v3 в веб-приложениях

На этой странице показано, как включить проверку приложений в веб-приложении с помощью встроенного поставщика reCAPTCHA v3. Когда вы включаете проверку приложений, вы гарантируете, что только ваше приложение может получить доступ к ресурсам Firebase вашего проекта. Обнаружили Обзор этой функции.

Обратите внимание, что reCAPTCHA v3 невидима для пользователей. Провайдер reCAPTCHA v3 не потребует от пользователей решения задачи в любое время. См v3 документацию ReCaptcha .

Если вы хотите использовать App Проверьте с вашим собственным настраиваемым поставщика, см Внедрение персонализированного App Check поставщика .

1. Настройте проект Firebase.

  1. Добавить Firebase в свой проект JavaScript , если вы еще не сделали этого.

  2. Зарегистрируйте Ваш сайт для рекапчи v3 и получить ключ рекапчи v3 сайта и секретный ключ.

  3. Зарегистрировать приложение использовать App Check с поставщиком ReCaptcha в настройках проекта> App Check разделом консоли Firebase. Вы должны будете предоставить секретный ключ , который вы получили в предыдущем шаге.

    Обычно вам необходимо зарегистрировать все приложения вашего проекта, потому что после включения принудительного применения для продукта Firebase только зарегистрированные приложения смогут получить доступ к внутренним ресурсам продукта.

  4. Дополнительно: В настройках регистрации приложений, установить пользовательское время-жизнь (TTL) для App Check лексемы , выданный провайдером. Вы можете установить TTL на любое значение от 30 минут до 7 дней. При изменении этого значения помните о следующих компромиссах:

    • Безопасность: более короткие TTL обеспечивают более надежную безопасность, поскольку сокращают окно, в течение которого злоумышленник может злоупотребить просочившимся или перехваченным токеном.
    • Производительность: более короткие TTL означают, что ваше приложение будет чаще выполнять аттестацию. Поскольку процесс аттестации приложения увеличивает задержку для сетевых запросов каждый раз, когда он выполняется, короткий TTL может повлиять на производительность вашего приложения.
    • Квота: более короткие TTL и частая повторная аттестация быстрее истощают вашу квоту. См Квоты & пределы .

    По умолчанию TTL на 1 день является разумным для большинства приложений.

2. Добавьте в свое приложение библиотеку проверки приложений.

Добавить Firebase на свой веб - приложение , если вы еще не сделали. Обязательно импортируйте библиотеку проверки приложений.

3. Инициализировать проверку приложений.

Добавьте следующий код инициализации в свое приложение перед доступом к любым службам Firebase. Вам нужно будет проходить ReCaptcha ключ сайта, который вы создали в консоли ReCaptcha, чтобы activate() .

Веб-версия 9

const { initializeApp } = require("firebase/app");
const { initializeAppCheck, ReCaptchaV3Provider } = require("firebase/app-check");

const app = initializeApp({
  // Your firebase configuration object
});

// Pass your reCAPTCHA v3 site key (public key) to activate(). Make sure this
// key is the counterpart to the secret key you set in the Firebase console.
const appCheck = initializeAppCheck(app, {
  provider: new ReCaptchaV3Provider('abcdefghijklmnopqrstuvwxy-1234567890abcd'),

  // Optional argument. If true, the SDK automatically refreshes App Check
  // tokens as needed.
  isTokenAutoRefreshEnabled: true
});

Веб-версия 8

firebase.initializeApp({
  // Your firebase configuration object
});

const appCheck = firebase.appCheck();
// Pass your reCAPTCHA v3 site key (public key) to activate(). Make sure this
// key is the counterpart to the secret key you set in the Firebase console.
appCheck.activate(
  'abcdefghijklmnopqrstuvwxy-1234567890abcd',

  // Optional argument. If true, the SDK automatically refreshes App Check
  // tokens as needed.
  true);

После того, как библиотека проверки приложений будет установлена ​​в вашем приложении, разверните ее.

Обновленное клиентское приложение начнет отправлять токены проверки приложений вместе с каждым запросом, который он делает в Firebase, но продукты Firebase не будут требовать, чтобы токены были действительными, пока вы не включите принудительное применение в разделе проверки приложений консоли Firebase. Подробности см. В следующих двух разделах.

4. Отслеживайте показатели запросов.

Теперь, когда ваше обновленное приложение находится в руках пользователей, вы можете включить принудительную проверку приложений для продуктов Firebase, которые вы используете. Однако прежде чем вы это сделаете, вы должны убедиться, что это не повредит вашим существующим законным пользователям.

База данных в реальном времени и облачное хранилище

Важным инструментом, который вы можете использовать для принятия этого решения для базы данных в реальном времени и облачного хранилища, является экран показателей запроса проверки приложений.

Для просмотра метрик Проверки запроса App для продукта, откройте Настройки проекта> App Проверьте раздел консоли Firebase. Например:

Скриншот страницы показателей проверки приложений

Показатели запросов для каждого продукта разбиты на четыре категории:

  • Проверенные запросы являются те , которые имеют действительный App Проверьте маркер. После включения принудительной проверки приложений только запросы в этой категории будут выполняться.

  • Устаревшие клиентские запросы являются те , которые отсутствуют в App Проверьте маркер. Эти запросы могут поступать из более старой версии Firebase SDK до того, как проверка приложений была включена в приложение.

  • Неизвестные запросы происхождения являются те , которые пропускают App Проверьте маркер, и не похожи они приходят из Firebase SDK. Это могут быть запросы, сделанные с использованием украденных ключей API, или поддельные запросы, сделанные без Firebase SDK.

  • Недействительные запросы являются те , которые имеют недопустимое App Проверьте маркер, который может быть от недостоверного клиента , пытающегося выдать себя за приложение, или из эмулируемых сред.

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

  • Если почти все недавние запросы поступают от проверенных клиентов, рассмотрите возможность включения принудительного применения, чтобы начать защиту внутренних ресурсов.

  • Если значительная часть недавних запросов поступает от устаревших клиентов, чтобы не мешать работе пользователей, подумайте о том, чтобы дождаться, пока большее количество пользователей обновит ваше приложение, прежде чем включать принудительное применение. Принудительная проверка приложений в выпущенном приложении приведет к поломке предыдущих версий приложения, которые не интегрированы с SDK проверки приложений.

  • Если ваше приложение еще не запущено, вам следует немедленно включить принудительную проверку приложений, поскольку устаревшие клиенты не используются.

Облачные функции

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

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

Вы можете анализировать эти показатели в Google Cloud Console путем создавая журналы на основе счетчика метрики со следующей метрикой фильтра:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

Добавьте метрику , используя поле jsonPayload.verifications.appCheck .

5. Включите принудительное исполнение

Чтобы включить принудительное применение, следуйте инструкциям для каждого продукта ниже. Как только вы включите принудительное применение для продукта, все непроверенные запросы к этому продукту будут отклонены.

База данных в реальном времени и облачное хранилище

Чтобы включить принудительное применение для базы данных в реальном времени и облачного хранилища:

  1. Откройте Проверка настроек проекта> App раздел консоли Firebase.

  2. Разверните представление показателей продукта, для которого вы хотите включить принудительное применение.

  3. Нажмите Принудительно и подтвердите свой выбор.

Обратите внимание, что после включения принудительного исполнения может пройти до 10 минут, прежде чем оно вступит в силу.

Облачные функции

См Включить App Проверка соблюдения для облачных функций .

Следующие шаги

Если после того, как вы зарегистрировали свое приложение для проверки приложений, вы хотите запустить свое приложение в среде, которую проверка приложений обычно не классифицирует как действительную, например, локально во время разработки или из среды непрерывной интеграции (CI), вы можете создать отладочная сборка вашего приложения, в которой используется провайдер отладки App Check вместо реального провайдера аттестации.

См Использование App Проверьте с провайдером отладки в веб - приложениях .