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

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

reCAPTCHA Enterprise — это платная услуга с бесплатной квотой. App Проверка также поддерживает ReCaptcha v3 , сервис , который не является без стоимости. Чтобы узнать разницу между ReCaptcha v3 и ReCaptcha Enterprise, см сравнение характеристик .

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

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

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

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

  2. Откройте рекапчи Enterprise раздел Cloud консоли и выполните следующие действия :

    1. Если вам будет предложено включить reCAPTCHA Enterprise API, сделайте это.
    2. Создание ключа Сайт -типа. Вам нужно будет указать домены, на которых вы размещаете свое веб-приложение. Оставьте флажок «Использовать флажок вызов» Unselected.
  3. Зарегистрировать приложение использовать App Check с провайдером рекапчи Enterprise в настройках проекта> App Check разделом консоли Firebase. Вам нужно будет предоставить ключ сайта, который вы получили на предыдущем шаге.

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

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

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

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

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

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

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

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

Веб-версия 9

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

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

// Create a ReCaptchaEnterpriseProvider instance using your reCAPTCHA Enterprise
// site key and pass it to initializeAppCheck().
const appCheck = initializeAppCheck(app, {
  provider: new ReCaptchaEnterpriseProvider(/* reCAPTCHA Enterprise site key */),
  isTokenAutoRefreshEnabled: true // Set to true to allow auto-refresh.
});

Веб-версия 8

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

// Create a ReCaptchaEnterpriseProvider instance using your reCAPTCHA Enterprise
// site key and pass it to activate().
const appCheck = firebase.appCheck();
appCheck.activate(
  new firebase.appCheck.ReCaptchaEnterpriseProvider(
    /* reCAPTCHA Enterprise site key */
  ),
  true // Set to true to allow auto-refresh.
);

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

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

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

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

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

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

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

Скриншот страницы метрик App Check

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

  • Проверенные запросы являются те , которые имеют действительный 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. Включить правоприменение

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

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

Чтобы включить принудительное применение базы данных в реальном времени, Cloud Firestore (iOS и Android) и облачного хранилища:

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

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

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

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

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

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

Примечание о стоимости

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

По умолчанию, ваш веб - приложение будет обновлять этот маркер в два раза каждые 1 час. Для того, чтобы контролировать то, как часто ваши приложения App освежает Проверить маркеры (и , таким образом , как часто создаются новые оценки), настроить их TTL .

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

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

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