Wie kann ich die Änderung von Firebase-Daten einschränken?

91

Firebase bietet ein Datenbank-Backend, damit sich Entwickler auf den clientseitigen Code konzentrieren können.

Wenn also jemand meine Firebase-Uri nimmt (zum Beispiel https://firebaseinstance.firebaseio.com), dann entwickle sie lokal darauf .

Könnten sie dann eine andere App aus meiner Firebase-Instanz erstellen, sich anmelden und authentifizieren, um alle Daten meiner Firebase-App zu lesen?

Rattanak
quelle

Antworten:

100

@ Frank van Puffelen,

Sie haben den Phishing-Angriff erwähnt. Es gibt tatsächlich einen Weg, dies zu sichern.

Wenn Sie sich bei Ihrer GoogleAPIs API Manager-Konsole anmelden, können Sie festlegen, von welchem ​​HTTP-Referrer Ihre App Anforderungen annehmen soll.

  1. Besuchen Sie https://console.developers.google.com/apis
  2. Gehen Sie zu Ihrem Firebase-Projekt
  3. Gehen Sie zu Anmeldeinformationen
  4. Wählen Sie unter API-Schlüssel den Browser-Schlüssel aus, der Ihrem Firebase-Projekt zugeordnet ist (sollte denselben Schlüssel haben wie der API-Schlüssel, den Sie zum Initialisieren Ihrer Firebase-App verwenden.)
  5. Fügen Sie unter "Anforderungen von diesen HTTP-Verweisen (Websites) annehmen" einfach die URL Ihrer App hinzu.

Dies sollte nur der Whitelist-Domain erlauben, Ihre App zu verwenden.

Dies wird auch hier in der Firebase-Start-Checkliste hier beschrieben: https://firebase.google.com/support/guides/launch-checklist

Vielleicht könnte die Firebase-Dokumentation dies sichtbarer machen oder die Domäne standardmäßig automatisch sperren und verlangen, dass Benutzer den Zugriff zulassen?

Prufrofro
quelle
2
Wenn ich die Google API-Konsole aufrufe, wird die Option zum Sperren des HTTP-Referrers nicht angezeigt. Screenshot wird hilfreich sein. thx
Rattanak
Haben Sie versucht, die obigen Schritte auszuführen? Es sollte dich genau dorthin bringen. Aus Sicherheitsgründen werde ich keine Screencap nehmen. Denken Sie daran, nach dem Browserschlüssel zu suchen. viel Glück.
Prufrofro
4
Was ist mit der Verwendung von Firebase mit einer hybriden mobilen App und einem Framework wie ionic? Wie kann White-Listing funktionieren? Irgendwelche Vorschläge?
Dinana
1
@prufrofro Funktioniert das gut für dich? Ich dachte daran, dasselbe für eine Android-App zu tun. Ich frage mich, warum Firebase dies im Sicherheitsbereich nicht behandelt.
Steliosf
2
@Anand Ja, aber Firebase behandelt dies nicht in der Dokumentation. Standardmäßig sind die Schlüssel öffentlich und müssen manuell eingeschränkt werden, damit sie nur in einem bestimmten Paketnamen und einem bestimmten SHA-1-App-Zertifikat verwendet werden können. Und ich habe mich gefragt, warum Firebase dies überhaupt nicht erwähnt. Gibt es einen Haken oder so?
Steliosf
38

Die Tatsache, dass jemand Ihre URL kennt, ist kein Sicherheitsrisiko.

Zum Beispiel: Ich habe kein Problem damit, Ihnen mitzuteilen, dass meine Bank ihre Website unter bankofamerica.com hostet und dort das HTTP-Protokoll spricht. Wenn Sie nicht auch die Anmeldeinformationen kennen, die ich für den Zugriff auf diese Website verwende, hilft es Ihnen nicht, die URL zu kennen.

Um Ihre Daten zu schützen, sollte Ihre Datenbank geschützt werden mit:

  • Validierungsregeln, die sicherstellen, dass alle Daten einer gewünschten Struktur entsprechen
  • Autorisierungsregeln, um sicherzustellen, dass jedes Datenbit nur von den autorisierten Benutzern gelesen und geändert werden kann

Dies alles wird in der Firebase-Dokumentation zu Sicherheit und Regeln behandelt , die ich sehr empfehlen kann.

Mit diesen Sicherheitsregeln kann die App einer anderen Person nur dann auf die Daten in Ihrer Datenbank zugreifen, wenn sie die Funktionen Ihrer Anwendung kopiert, die Benutzer sich bei ihrer App anstelle Ihrer App anmelden und sich anmelden / von / schreiben in schreiben Ihre Datenbank; im Wesentlichen ein Phishing-Angriff. In diesem Fall gibt es kein Sicherheitsproblem in der Datenbank, obwohl es wahrscheinlich an der Zeit ist, einige Behörden einzubeziehen.

Frank van Puffelen
quelle
4
nicht ganz die Antwort, die ich suche. Lassen Sie mich Sie anders fragen. Angenommen, ich habe dir diese URL zu meiner Feuerbasis gegeben https://tinderclone.firebaseio.com/und https://tinderclone.firebaseio.com/profiles.json. Sie sind echte Firebase-Datenbank. Können Sie daraus eine App entwickeln, indem Sie ein Anmeldeformular und ein Anmeldeformular per E-Mail erstellen? Da meine App es jedem ermöglicht, sich per E-Mail zu registrieren, können Sie nach Ihrer Registrierung alle Daten lesen? Ich werde dir später noch eine Frage stellen. Vielen Dank
Rattanak
4
Das hängt davon ab, wie Sie Ihre Datenbank sichern. Durch einfaches Hinzufügen ".read": falsewird verhindert, dass jemand die Daten sieht. Sie möchten wahrscheinlich etwas mehr zulassen, aber alles hängt von Ihrem Anwendungsfall ab. Das Sichern der Daten wird in der Firebase-Dokumentation zu Sicherheit und Regeln behandelt .
Frank van Puffelen
5

In Bezug auf die Auth-Whitelist für mobile Apps, bei denen der Domainname nicht anwendbar ist, hat Firebase

1) SHA1 fingerprintfür Android Apps und

2) App Store ID and Bundle ID and Team ID (if necessary)für Ihre iOS-Apps

die Sie in der Firebase-Konsole konfigurieren müssen.

Mit diesem Schutz kommt die Validierung nicht nur, wenn jemand über einen gültigen API-Schlüssel, eine gültige Auth-Domäne usw. verfügt, sondern auch von unseren autorisierten Apps und domain name/HTTP referrer in casevom Web .

Wir müssen uns keine Sorgen machen, wenn dieser API-Schlüssel und andere Verbindungsparameter anderen ausgesetzt sind.

Weitere Informationen finden Sie unter https://firebase.google.com/support/guides/launch-checklist

Anand
quelle