จะ จำกัด การแก้ไขข้อมูล Firebase ได้อย่างไร


93

Firebase มี back-end ของฐานข้อมูลเพื่อให้นักพัฒนาสามารถมุ่งเน้นไปที่โค้ดฝั่งไคลเอ็นต์

ดังนั้นหากมีคนใช้ firebase uri ของฉัน (ตัวอย่างเช่นhttps://firebaseinstance.firebaseio.com) ให้พัฒนาขึ้นในเครื่อง

จากนั้นพวกเขาจะสามารถสร้างแอปอื่นจากอินสแตนซ์ Firebase สมัครใช้งานและตรวจสอบสิทธิ์ตัวเองเพื่ออ่านข้อมูลทั้งหมดของแอป Firebase ของฉันได้หรือไม่

คำตอบ:


104

@ แฟรงค์ฟานพัฟเฟเลน

คุณกล่าวถึงการโจมตีแบบฟิชชิง มีวิธีที่จะรักษาความปลอดภัยได้จริง

หากคุณลงชื่อเข้าใช้คอนโซล googleAPIs API Manager คุณมีตัวเลือกในการล็อกผู้อ้างอิง HTTP รายใดที่แอปของคุณจะยอมรับคำขอ

  1. ไปที่https://console.developers.google.com/apis
  2. ไปที่โครงการ firebase ของคุณ
  3. ไปที่ข้อมูลรับรอง
  4. ภายใต้คีย์ API ให้เลือกคีย์เบราว์เซอร์ที่เชื่อมโยงกับโปรเจ็กต์ firebase ของคุณ (ควรมีคีย์เดียวกับคีย์ API ที่คุณใช้เริ่มต้นแอพ firebase ของคุณ)
  5. ภายใต้ "ยอมรับคำขอจากผู้อ้างอิง HTTP เหล่านี้ (เว็บไซต์) เพียงเพิ่ม URL ของแอปของคุณ

สิ่งนี้ควรอนุญาตให้โดเมนที่อนุญาตพิเศษใช้แอปของคุณเท่านั้น

นอกจากนี้ยังอธิบายไว้ในรายการตรวจสอบการเปิดตัว firebase ที่นี่: https://firebase.google.com/support/guides/launch-checklist

บางทีเอกสาร firebase อาจทำให้มองเห็นได้ชัดเจนขึ้นหรือล็อกโดเมนโดยอัตโนมัติตามค่าเริ่มต้นและกำหนดให้ผู้ใช้ต้องอนุญาตการเข้าถึง?


2
เมื่อฉันไปที่คอนโซล Google API ฉันไม่เห็นตัวเลือกในการล็อกผู้อ้างอิง HTTP ภาพหน้าจอจะเป็นประโยชน์ thx
rattanak

คุณได้ลองทำตามขั้นตอนข้างต้นแล้วหรือยัง? ควรพาคุณไปที่นั่น ด้วยเหตุผลด้านความปลอดภัยฉันจะไม่ใช้แคปหน้าจอ อย่าลืมมองหาคีย์เบราว์เซอร์ ขอให้โชคดี
prufrofro

4
แล้วเมื่อใช้ firebase กับแอพมือถือแบบไฮบริดโดยใช้เฟรมเวิร์กเช่นไอออนิกการทำไวท์ลิสต์จะทำงานอย่างไร ข้อเสนอแนะใด ๆ ?
Dinana

1
@prufrofro ทำงานได้ดีสำหรับคุณหรือไม่? กำลังคิดที่จะทำสิ่งเดียวกันกับแอป Android ฉันสงสัยว่าทำไม Firebase ถึงไม่ครอบคลุมในส่วนความปลอดภัย
steliosf

2
@Anand ใช่ แต่ Firebase ไม่ครอบคลุมสิ่งนี้ในเอกสารประกอบ โดยค่าเริ่มต้นคีย์จะเป็นแบบสาธารณะและคุณต้อง จำกัด ด้วยตนเองเพื่อใช้ในชื่อแพ็กเกจเฉพาะและใบรับรองแอป SHA-1 เท่านั้น และฉันก็สงสัยว่าทำไม Firebase ถึงไม่พูดถึงเรื่องนี้เลย มีการจับหรืออะไร?
steliosf

38

การที่มีคนรู้ URL ของคุณไม่ใช่ความเสี่ยงด้านความปลอดภัย

ตัวอย่างเช่นฉันไม่มีปัญหาในการบอกคุณว่าธนาคารของฉันโฮสต์เว็บไซต์ที่ bankofamerica.com และพูดถึงโปรโตคอล HTTP ที่นั่น เว้นแต่คุณจะทราบข้อมูลรับรองที่ฉันใช้เพื่อเข้าถึงไซต์นั้นด้วยการรู้ URL นั้นไม่ได้ส่งผลดีใด ๆ

เพื่อรักษาความปลอดภัยข้อมูลของคุณฐานข้อมูลของคุณควรได้รับการปกป้องด้วย:

  • กฎการตรวจสอบเพื่อให้แน่ใจว่าข้อมูลทั้งหมดเป็นไปตามโครงสร้างที่คุณต้องการ
  • กฎการอนุญาตเพื่อให้แน่ใจว่าข้อมูลแต่ละบิตสามารถอ่านและแก้ไขได้โดยผู้ใช้ที่ได้รับอนุญาตเท่านั้น

ทั้งหมดนี้ครอบคลุมอยู่ในเอกสาร Firebase เรื่องความปลอดภัยและกฎซึ่งขอแนะนำเป็นอย่างยิ่ง

ด้วยกฎความปลอดภัยเหล่านี้วิธีเดียวที่แอปของผู้อื่นสามารถเข้าถึงข้อมูลในฐานข้อมูลของคุณคือหากพวกเขาคัดลอกการทำงานของแอปพลิเคชันของคุณให้ผู้ใช้ลงชื่อเข้าใช้แอปของตนแทนที่จะเป็นของคุณและลงชื่อเข้าใช้ / อ่าน / เขียนถึง ฐานข้อมูลของคุณ โดยพื้นฐานแล้วเป็นการโจมตีแบบฟิชชิ่ง ในกรณีนี้ไม่มีปัญหาด้านความปลอดภัยในฐานข้อมูลแม้ว่าอาจถึงเวลาที่ต้องให้หน่วยงานบางส่วนเข้ามาเกี่ยวข้อง


4
ไม่ใช่คำตอบที่ฉันกำลังมองหา ให้ฉันถามคุณในทางอื่น สมมติว่าฉันให้ url นี้แก่คุณใน firebase https://tinderclone.firebaseio.com/และhttps://tinderclone.firebaseio.com/profiles.json. เป็นฐานข้อมูล firebase จริง คุณสามารถพัฒนาแอปโดยสร้างแบบฟอร์มสมัครและแบบฟอร์มเข้าสู่ระบบด้วยอีเมล เนื่องจากแอปของฉันอนุญาตให้ทุกคนลงทะเบียนด้วยอีเมลหลังจากที่คุณลงทะเบียนแล้วคุณจะสามารถอ่านข้อมูลทั้งหมดได้หรือไม่ ฉันจะถามคุณอีกคำถามในภายหลัง ขอบคุณ
รัตนัค

4
ขึ้นอยู่กับว่าคุณรักษาความปลอดภัยฐานข้อมูลของคุณอย่างไร เพียงแค่เพิ่ม".read": falseจะป้องกันไม่ให้ใครเห็นข้อมูล คุณอาจต้องการอนุญาตมากกว่านั้นเล็กน้อย แต่ทั้งหมดขึ้นอยู่กับกรณีการใช้งานของคุณ การรักษาความปลอดภัยข้อมูลที่มีการกล่าวถึงในเอกสาร Firebase ในการรักษาความปลอดภัยและกฎระเบียบ
Frank van Puffelen

6

เกี่ยวกับ Auth White-List สำหรับแอปบนอุปกรณ์เคลื่อนที่ซึ่งไม่สามารถใช้ชื่อโดเมนได้ Firebase มี

1) SHA1 fingerprintสำหรับแอพ Androidและ

2) App Store ID and Bundle ID and Team ID (if necessary)สำหรับแอป iOSของคุณ

ซึ่งคุณจะต้องกำหนดค่าในคอนโซล Firebase

ด้วยการป้องกันนี้เนื่องจากการตรวจสอบไม่ได้เป็นเพียงถ้ามีคนมีคีย์ API ที่ถูกต้องโดเมน Auth ฯลฯ แต่ยังคือมันมาจากปพลิเคชันที่ได้รับอนุญาตของเราและdomain name/HTTP referrer in caseของเว็บ

กล่าวว่าเราไม่ต้องกังวลว่าคีย์ API เหล่านี้และพารามิเตอร์การเชื่อมต่ออื่น ๆ จะเปิดเผยต่อผู้อื่นหรือไม่

ต้องการข้อมูลเพิ่มเติมhttps://firebase.google.com/support/guides/launch-checklist


ขออภัยในความไม่รู้ของฉันฉันไม่ค่อยดีกับการเข้ารหัส แต่ไม่สามารถเข้าถึง Sha1 ผ่าน apk ของคุณ? คนก็ลอก Sha1 ด้วยไม่ได้เหรอ? ฉันไม่เห็นว่าสิ่งนี้ช่วยได้อย่างไร ฉันจะดีใจมากที่ได้รับการพิสูจน์เป็นอย่างอื่น :)
cs guy

ใช่. คุณสามารถรับ sha1 ของ apk ได้อย่างแน่นอน แต่นั่นไม่ใช่สิ่งที่คุณส่งผ่านเป็นพารามิเตอร์ไปยัง firebase เพื่อตรวจสอบการโทรของคุณ firebase ถ่ายโดยเป็นระดับ api-sdk (เชื่อจากรันไทม์ของ Android) ดังนั้นคุณจะไม่สามารถส่งสิ่งนี้ไปยัง firebase เป็นพารามิเตอร์เพื่อปลอมการเชื่อมต่อได้
อานันท์

การใช้ลายนิ้วมือ SHA1 เท่านั้นจะไม่ช่วยอะไรในการสื่อสารแอป Android กับ Firebase ให้ปลอดภัย สามารถรับและคัดลอก SHA1 ได้อย่างง่ายดายและยังสามารถปลอมการเชื่อมต่อได้โดยใช้ Firebase API แทน SDK คุณควรรับรองแอปของคุณก่อนและใช้รหัสที่ทำให้สับสนเพื่อซ่อนคีย์
FEBRYAN ASA PERDANA
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.