Check out what’s new from Firebase at Google I/O 2022. Learn more

Włącz sprawdzanie aplikacji za pomocą SafetyNet na Androidzie

Na tej stronie pokazano, jak włączyć sprawdzanie aplikacji w aplikacji na Androida przy użyciu wbudowanego dostawcy SafetyNet. Po włączeniu Kontroli aplikacji zapewniasz, że tylko Twoja aplikacja ma dostęp do zasobów Firebase projektu. Zobacz przegląd tej funkcji.

Jeśli chcesz korzystać z funkcji App Check z własnym niestandardowym dostawcą, zobacz Implementowanie niestandardowego dostawcy App Check .

1. Skonfiguruj projekt Firebase

  1. Dodaj Firebase do swojego projektu na Androida, jeśli jeszcze tego nie zrobiłeś.

  2. Zarejestruj swoje aplikacje, aby korzystać z funkcji App Check u dostawcy SafetyNet w sekcji App Check konsoli Firebase. Musisz podać odcisk palca SHA-256 certyfikatu podpisywania aplikacji.

    Zwykle musisz zarejestrować wszystkie aplikacje swojego projektu, ponieważ po włączeniu wymuszania dla produktu Firebase tylko zarejestrowane aplikacje będą miały dostęp do zasobów zaplecza produktu.

  3. Opcjonalnie : w ustawieniach rejestracji aplikacji ustaw niestandardowy czas wygaśnięcia (TTL) dla tokenów sprawdzania aplikacji wydanych przez dostawcę. Możesz ustawić TTL na dowolną wartość z zakresu od 30 minut do 7 dni. Zmieniając tę ​​wartość, pamiętaj o następujących kompromisach:

    • Bezpieczeństwo: Krótsze czasy TTL zapewniają większe bezpieczeństwo, ponieważ zmniejszają okno, w którym przeciek lub przechwycony token może zostać nadużyty przez atakującego.
    • Wydajność: krótsze czasy TTL oznaczają, że aplikacja będzie częściej przeprowadzać atestację. Ponieważ proces zaświadczania aplikacji zwiększa opóźnienie żądań sieciowych za każdym razem, gdy jest wykonywany, krótki czas TTL może wpłynąć na wydajność aplikacji.
    • Limit i koszt: krótsze czasy oczekiwania i częste ponowna atestacja szybciej zmniejszają limit, a w przypadku usług płatnych potencjalnie kosztują więcej. Zobacz Kontyngenty i limity .

    Domyślny czas TTL wynoszący 1 godzinę jest rozsądny dla większości aplikacji. Zwróć uwagę, że biblioteka App Check odświeża tokeny po około połowie czasu TTL.

2. Dodaj bibliotekę Sprawdzanie aplikacji do swojej aplikacji

W swoim module (app-level) pliku Gradle (zazwyczaj app/build.gradle ) zadeklaruj zależność dla biblioteki App Check Android:

Java

dependencies {
    implementation 'com.google.firebase:firebase-appcheck-safetynet:16.0.0'
}

Kotlin+KTX

dependencies {
    implementation 'com.google.firebase:firebase-appcheck-safetynet:16.0.0'
}

3. Zainicjuj sprawdzanie aplikacji

Dodaj następujący kod inicjujący do swojej aplikacji, aby działała przed użyciem innych pakietów SDK Firebase:

Java

FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
        SafetyNetAppCheckProviderFactory.getInstance());

Kotlin+KTX

FirebaseApp.initializeApp(/*context=*/this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
    SafetyNetAppCheckProviderFactory.getInstance()
)

Po zainstalowaniu biblioteki App Check w Twojej aplikacji zacznij rozpowszechniać zaktualizowaną aplikację wśród użytkowników.

Zaktualizowana aplikacja kliencka zacznie wysyłać tokeny sprawdzania aplikacji wraz z każdym żądaniem wysłanym do Firebase, ale produkty Firebase nie będą wymagać, aby tokeny były ważne, dopóki nie włączysz wymuszania w sekcji Sprawdzanie aplikacji w konsoli Firebase. Szczegółowe informacje znajdziesz w dwóch następnych sekcjach.

4. Monitoruj metryki żądań

Teraz, gdy zaktualizowana aplikacja jest w rękach użytkowników, możesz włączyć wymuszanie sprawdzania aplikacji dla używanych produktów Firebase. Jednak zanim to zrobisz, upewnij się, że nie zakłóci to istniejących legalnych użytkowników.

Baza danych czasu rzeczywistego, Cloud Firestore i Cloud Storage

Ważnym narzędziem, którego możesz użyć do podjęcia tej decyzji w przypadku Bazy danych czasu rzeczywistego, Cloud Firestore i Cloud Storage, jest ekran metryk żądania sprawdzania aplikacji.

Aby wyświetlić metryki żądania sprawdzenia aplikacji dla produktu, otwórz sekcję Sprawdzanie aplikacji w konsoli Firebase. Na przykład:

Zrzut ekranu strony z danymi Sprawdzanie aplikacji

Wskaźniki żądań dla każdego produktu są podzielone na cztery kategorie:

  • Zweryfikowane żądania to te, które mają ważny token sprawdzania aplikacji. Po włączeniu wymuszania sprawdzania aplikacji kończą się tylko żądania z tej kategorii.

  • Nieaktualne żądania klientów to te, w których brakuje tokena sprawdzania aplikacji. Te żądania mogą pochodzić ze starszej wersji pakietu SDK Firebase, zanim funkcja App Check została uwzględniona w aplikacji.

  • Żądania o nieznanym pochodzeniu to te, w których brakuje tokena sprawdzania aplikacji i nie wyglądają na pochodzące z pakietu Firebase SDK. Mogą to być żądania wysłane przy użyciu skradzionych kluczy API lub sfałszowane żądania wysłane bez pakietu Firebase SDK.

  • Nieprawidłowe żądania to te, które mają nieprawidłowy token sprawdzania aplikacji, który może pochodzić od nieautentycznego klienta próbującego podszyć się pod Twoją aplikację lub z emulowanych środowisk.

Dystrybucja tych kategorii dla Twojej aplikacji powinna informować, kiedy zdecydujesz się włączyć wymuszanie. Oto kilka wskazówek:

  • Jeśli prawie wszystkie ostatnie żądania pochodzą od zweryfikowanych klientów, rozważ włączenie wymuszania, aby zacząć chronić zasoby zaplecza.

  • Jeśli znaczna część ostatnich żądań pochodzi od prawdopodobnie nieaktualnych klientów, aby uniknąć zakłócania pracy użytkowników, rozważ poczekanie, aż więcej użytkowników zaktualizuje aplikację, zanim włączysz wymuszanie. Wymuszanie sprawdzania aplikacji w wydanej aplikacji spowoduje uszkodzenie wcześniejszych wersji aplikacji, które nie są zintegrowane z pakietem SDK sprawdzania aplikacji.

  • Jeśli Twoja aplikacja nie została jeszcze uruchomiona, natychmiast włącz wymuszanie sprawdzania aplikacji, ponieważ nie są używane żadne nieaktualne klienty.

Funkcje chmury

W przypadku Cloud Functions możesz uzyskać metryki App Check, sprawdzając dzienniki swoich funkcji. Każde wywołanie funkcji wywoływanej emituje wpis w dzienniku strukturalnym, jak w poniższym przykładzie:

{
  "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
    }
  }
}

Możesz analizować te dane w Google Cloud Console, tworząc oparte na logach dane liczników z następującym filtrem danych:

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

Oznacz metrykę w polu jsonPayload.verifications.appCheck .

5. Włącz wymuszanie

Aby włączyć egzekwowanie, postępuj zgodnie z instrukcjami dla każdego produktu poniżej. Po włączeniu wymuszania dla produktu wszystkie niezweryfikowane żądania dotyczące tego produktu zostaną odrzucone.

Baza danych czasu rzeczywistego, Cloud Firestore i Cloud Storage

Aby włączyć wymuszanie dla Bazy danych czasu rzeczywistego, Cloud Firestore (iOS i Android) oraz Cloud Storage:

  1. Otwórz sekcję Sprawdzanie aplikacji w konsoli Firebase.

  2. Rozwiń widok danych produktu, dla którego chcesz włączyć egzekwowanie.

  3. Kliknij Egzekwuj i potwierdź swój wybór.

Pamiętaj, że włączenie wymuszania może potrwać do 15 minut.

Funkcje chmury

Zobacz Włączanie wymuszania sprawdzania aplikacji dla Cloud Functions .

Następne kroki

Jeśli po zarejestrowaniu aplikacji do sprawdzania aplikacji chcesz uruchomić aplikację w środowisku, którego Sprawdzanie aplikacji normalnie nie klasyfikuje jako prawidłowe, takim jak emulator podczas tworzenia lub ze środowiska ciągłej integracji (CI), możesz utwórz kompilację debugowania swojej aplikacji, która używa dostawcy debugowania sprawdzania aplikacji zamiast rzeczywistego dostawcy poświadczania.

Zobacz Używanie sprawdzania aplikacji z dostawcą debugowania w systemie Android .