2015-03-24 22 views
38

Firebase'de yazılmış bir uygulamanız var. Güvenlik kuralları ve istemci tarafı kodu, uygulamamın çalışmasını sağlamak için yeterli değil. Ben queries ile neler yapabileceğini ötesine benim verilerin diğer endeksleri Bina onDisconnect handlers Bir sunucuyu Firebase'e nasıl doğrularsınız?

  • kullanarak temizlemek başarmak zor Normalleştirilmemiş verileri temizleniyor

    • : Birkaç görevleri yapmak için bir sunucu bağlamak gerekir
  • cevap

    81

    Güncelleme (20160611): Eğer https://firebase.google.com üzerinde proje oluşturdu, adımlar bir sunucudan veritabanına erişim farklıdır. Bu yanıtı bakın: Is it still possible to do server side verification of tokens in Firebase 3?

    Bunu yapabileceğiniz iki yol vardır: Bir sunucu kimlik doğrulama belirteci oluşturun veya bir Firebase sırrı kullanın.

    Size sunucudan kullanabilirsiniz belirteçleri oluşturmak için Özel Giriş için oluşturulan aynı token generator libraries kullanabilirsiniz belirteç bir sunucu oluşturun. Ardından bu sunucuya güvenlik kurallarınızdan özel erişim sağlayabilirsiniz.

    1. sunucunuzun dil/platformu için token generator library alın:

      İşte adımlardır. Node.js ve Java sunucuları en iyi şekilde çalışır.

    2. Önceden seçilmiş bir uid ile bir belirteç oluşturun. Bir node.js sunucu yazıyorsanız, kodu şöyle görünebilir:

      var FirebaseTokenGenerator = require("firebase-token-generator"); 
      var tokenGenerator = new FirebaseTokenGenerator("<your-firebase-secret>"); 
      var token = tokenGenerator.createToken(
          {uid: "my-awesome-server"}, 
          { expires: <far_into_the_future_seconds> }); 
      
    3. müşterini kimliğini doğrulamak için belirteci kullanın. örneğin sunucunuzun dil için hiçbir istemci varsa

      var ref = new Firebase("https://<your-firebase>.firebaseio.com/"); 
      ref.authWithCustomToken(token, function(error, authData) { 
          ... 
      }); 
      
    4. : Burada daha node.js kod PHP, REST isteğiniz için jetonu auth parameter olarak kullanın.

    5. Güncelleme bütün Firebase

      { 
          "rules": { 
           ".write": false, 
           ".read": "auth.uid === 'my-awesome-server'" 
          } 
      } 
      
    6. Erişim tüm verileri okuma erişimi sağlayan bu basit kuralı gibi kullanıcı kimliği tanımlandığı şekliyle, özel izinler sunucu vermek için güvenlik kuralları

      , müthiş şeyler yapmak .

    Avantajları

    • Bu sunucu kimlik doğrulaması için Firebase resmen önerilen yoldur.
    • Sunucunuz doğrulama kurallarına saygı gösterecektir.
    • Sunucu başka bir kullanıcıdır. Verilerinize ince taneli erişim sağlamak için güvenlik kurallarını kullanabilirsiniz.
    • Erişim iyi taneli olduğundan, sunucunuzda bir hata, kök düğümünüzü silmek gibi bir hasara neden olacaktır.

    Firebase gizli

    Bir şapka açılır kenarında yaşayan hoşlanır geliştirici ve türleri sudo tür iseniz, aynı zamanda doğrudan Firebase sırrı kullanarak kimlik doğrulaması yapabilir.

    Fakat cidden, bunu yapma. Tehlikeli.

    Nedenleri o

    • Hemen körlemesine sudo kullanmak gibi yapmak değil, bu son derece tehlikeli.
    • sunucunuz doğrulama kurallarınıza uymayacaktır.
    • Sunucunuz tam dolu /Firebase'inize yazma erişimi. Eğer yeterince çirkin bir hata varsa, iş erişimi olmayan verileri silebilir veya bozabilir.
    • gizliliğiniz daha fazla yerde (potansiyel olarak giden istek günlüklerinde, vb.) Sona erer. Dışarı çıkarsa daha fazla riske maruz kalırsınız.
    +2

    Bu cevap yeterince upvotes –

    +1

    yok Bu iyi bir kopyasıdır: https://www.firebase.com/docs/web/guide/login/custom.html ama aslında bazı değerli noktalarda genişletmek yok. – arcseldon

    +0

    Burada başka bir yararlı bağlantı: https://www.firebase.com/docs/security/quickstart.html – arcseldon

    İlgili konular