2017-12-21 8 views
-1

Wie überprüft man, ob der Benutzer das korrekte Passwort eingibt, um an einem Chat teilzunehmen?Firebase - Mit Sicherheit am Chat mit dem Passwort teilnehmen

Dieser Ansatz ist wahrscheinlich vollständig unangemessen. Dieses Stück Code ist nur um zu zeigen, was ich erreichen möchte, aber es funktioniert überhaupt nicht.

val ref = FirebaseDatabase.getInstance().getReference("chats") 

ref.child(chatName).child("password").equalTo(password).addListenerForSingleValueEvent( 
    override fun onDataChange(snapshot: DataSnapshot) { 
     Log.d(TAG, snapshot.toString()) 
     // if there is data the password was right 
    } 
    .... 
) 

Wie kann dieses Ganze beitreten Chat mit Passwort-System sicher durchgeführt werden? Welche Art von Regeln muss ich für die Datenbank festlegen?

Ist es möglich, Firebase-Abfragen mit gerootetem Telefon zu ändern und die Daten zu sehen, die zwischen Client und Server übertragen werden?

Antwort

1

Wenn Sie jeden Chat-Raum mit einem Passwort sichern möchten, besteht eine Möglichkeit darin, dieses Passwort in den Pfad des Chatrooms einzubetten. So zum Beispiel:

chats: { 
    roomId1: { 
    secret: { 
     chat11: ... 
     chat12: ... 
    } 
    } 
    roomId2: { 
    correcthorsebatterystaple: { 
     chat21: ... 
     chat22: ... 
    } 
    } 

mit den folgenden Regeln diese Struktur Sicher:

{ 
    "rules": { 
    ".read": false, 
    "chats": { 
     "$roomId": { 
     "$password: { 
      ".read": true 
     } 
     } 
    } 
    } 
} 

diese Struktur mit, niemand kann die Liste der Zimmer lesen, oder sogar ein bestimmtes Zimmer. Um lesen zu können, müssen sie wissen sowohl die Zimmer-ID und das Passwort für dieses Zimmer.

+0

Wie kann das Passwort geändert werden? – Metu

+0

Bei diesem Modell müssen Sie alle Nachrichten verschieben, wenn Sie das Passwort ändern möchten. Da es keine Operation zum Umbenennen/Verschieben einer Verzweigung gibt, müssen Sie diese dann kopieren. Siehe https://stackoverflow.com/questions/39107274/is-it-possible-to-rename-a-key-in-the-firebase-realtime-database –

+0

Dann suche ich immer noch nach einer anderen Möglichkeit, dies zu tun. Danke, obwohl. – Metu