2017-01-24 6 views
6

पर फायरबेस डेटाबेस एक्सेस प्रतिबंधित करें मैं एक एंड्रॉइड ऐप पर काम कर रहा हूं जो Firebase database से पढ़ता है। ऐप उपयोगकर्ता डेटाबेस में लॉग इन या संशोधित नहीं होंगे। सभी ऐप उपयोगकर्ता एक ही डेटा को देख रहे होंगे; मैं अपने रीयल-टाइम अपडेट फीचर्स के लिए फायरबेस का उपयोग कर रहा हूं।एक एंड्रॉइड ऐप

आदर्श रूप में, मैं डेटाबेस तक पहुंच प्रतिबंधित करना चाहता हूं ताकि केवल मेरा ऐप डेटा पढ़ सके।

मैं कुछ चीजें मैं कर सकता के बारे में पता कर रहा हूँ:

1. लिखें सुरक्षा नियम है कि किसी को को पढ़ने के लिए अनुमति देता है, वह यह है कि

{ 
    "rules": { 
    ".read": true, 
    ".write": false 
    } 
} 

कोन: कोई भी पढ़ सकते हैं :(

2. allow authenticated users to read सुरक्षा नियम लिखें, फिर ऐप में उपयोगकर्ता नाम और पासवर्ड हार्ड कोड

{ 
    "rules": { 
    "$user_id":{ 
     ".read": "auth.uid === $user_id", 
     ".write": false 
    } 
    } 
} 

कॉन: किसी ऐप में उपयोगकर्ता नाम और पासवर्ड को हार्ड कोड करना बहुत गलत लगता है। इसके अलावा, यह वास्तव में डेटाबेस को लॉक नहीं करता है, क्योंकि कोई भी ऐप को डीकंपाइल कर सकता है, google-services.json और हार्ड-कोड किए गए उपयोगकर्ता नाम/पासवर्ड को पकड़ सकता है, और अपना स्वयं का ऐप लिख सकता है जिसने मेरा पैकेज नाम साझा किया है।

गुगलिंग ने this, जो लिखने के लिए विशिष्ट है, और this, जो "नहीं" कहता है लेकिन कुछ साल पुराना है, से पता चला है।

डेटाबेस तक पहुंच प्रतिबंधित करने का सही दृष्टिकोण क्या है? क्या मैं गलत दिशा से यह आ रहा हूं?

+1

आपके द्वारा लिंक किया गया उत्तर अभी भी सही है: लिमी का कोई रास्ता नहीं है अपने फायरबेस डाटाबेस तक बस अपने ऐप तक पहुंच नहीं है। –

+0

ठीक है, धन्यवाद @ फ्रैंकवन पफेलन। – Michiyo

+0

आपकी अंतिम पसंद क्या है? – androfan

उत्तर

0

जब आप फ़ायरबेस परियोजना में अपना आवेदन जोड़ते हैं, तो आपको अपने ऐप के SHA1 प्रमाणपत्र निर्दिष्ट करना होगा, इसलिए कोई भी आपके अलावा आपके डेटा तक पहुंचने में सक्षम नहीं है।

+5

यह सच नहीं है। '.read" के साथ: सत्य, 'कोई भी http://project_name.firebaseio.com/ – androfan

+0

के माध्यम से वेब आधारित डेटाबेस इंटरफ़ेस तक पहुंच सकता है जब आप इस ऐप पर अपना प्रोजेक्ट नाम डालते हैं तो आपको डर जाएगा: https://play.google .com/store/apps/details? id = amit.ya.fire.realtimefirebase – iMobaio

1

3. उपयोग FirebaseAuth और signInAnonymously() विधि

संदर्भ: https://firebase.google.com/docs/auth/android/anonymous-auth

तब समायोजित सुरक्षा नियम:

{ 
     "rules": { 
     ".read": "auth != null", 
     ... 
     } 
    } 

कोन: एक ही डाटा पढ़ने में ही प्रयोग किया जाता से अधिक खातों

+0

यह # 2 से भी कम सुरक्षित लगता है, क्योंकि मैं क्षमता छुपा/एन्क्रिप्ट/obfuscate छोड़ना होगा (महान नहीं, लेकिन कुछ भी नहीं से बेहतर ?) एक उपयोगकर्ता नाम और पासवर्ड। क्या आप स्पष्ट कर सकते हैं कि आपको क्यों लगता है कि यह बेहतर है? – Michiyo