FixVibe
Covered by FixVibehigh

Firebase Аюулгүй байдлын дүрэм: Зөвшөөрөлгүй өгөгдөлд өртөхөөс урьдчилан сэргийлэх

Firebase Аюулгүй байдлын дүрмүүд нь Firestore болон Cloud Storage ашигладаг сервергүй програмуудын үндсэн хамгаалалт юм. Эдгээр дүрмүүд нь үйлдвэрлэлд дэлхийн хэмжээнд унших, бичих хандалтыг зөвшөөрөх зэрэг хэт зөвшөөрөгдсөн тохиолдолд халдагчид эмзэг өгөгдлийг хулгайлах эсвэл устгах зорилготой програмын логикийг тойрч гарах боломжтой. Энэхүү судалгаа нь нийтлэг буруу тохируулга, "туршилтын горим"-ын өгөгдмөл байдлын эрсдэл, танилтад суурилсан хандалтын хяналтыг хэрхэн хэрэгжүүлэх талаар судалсан.

CWE-284CWE-863

Firebase Аюулгүй байдлын дүрмүүд нь Firestore, Realtime Database болон Cloud Storage [S1] дахь өгөгдлийг хамгаалах нарийн ширхэгтэй, серверээр ажилладаг механизмаар хангадаг. Firebase програмууд нь эдгээр үүлэн үйлчилгээнүүдтэй үйлчлүүлэгчийн талаас шууд харилцдаг тул эдгээр дүрмүүд нь [S1] арын өгөгдөлд зөвшөөрөлгүй нэвтрэхээс сэргийлэх цорын ганц саад тотгор болдог.

Зөвшөөрөгдсөн дүрмийн нөлөө

Буруу тохируулсан дүрмүүд [S2] их хэмжээний өгөгдөлд өртөхөд хүргэдэг. Хэрэв дүрмүүд нь хэт зөвшөөрөгдсөн байхаар тохируулагдсан бол, тухайлбал, глобал хандалтыг зөвшөөрдөг өгөгдмөл "туршилтын горим"-ын тохиргоог ашиглан төслийн ID-г мэддэг хэрэглэгч [S2] мэдээллийн сангийн агуулгыг бүхэлд нь унших, өөрчлөх, устгах боломжтой. Энэ нь үйлчлүүлэгчийн аюулгүй байдлын бүх арга хэмжээг тойрч гарах бөгөөд хэрэглэгчийн эмзэг мэдээлэл алдагдах эсвэл [S2] үйлчилгээг бүхэлд нь тасалдуулж болзошгүй.

Үндсэн шалтгаан: Зөвшөөрлийн логик хангалтгүй

Эдгээр эмзэг байдлын үндсэн шалтгаан нь хэрэглэгчийн таних тэмдэг эсвэл [S3] нөөцийн шинж чанарт тулгуурлан хандалтыг хязгаарласан тодорхой нөхцлүүдийг хэрэгжүүлээгүйгээс болдог. Хөгжүүлэгчид request.auth объект [S3]-г баталгаажуулдаггүй үйлдвэрлэлийн орчинд өгөгдмөл тохиргоог идэвхтэй орхидог. request.auth-г үнэлэхгүйгээр систем нь хууль ёсны баталгаажсан хэрэглэгч болон нэргүй хүсэлт гаргагч [S3] хоёрыг ялгаж чадахгүй.

Техникийн засвар

Firebase орчныг хамгаалахын тулд нээлттэй хандалтаас хамгийн бага давуу эрх бүхий загвар руу шилжих шаардлагатай.

  • Баталгаажуулалтыг хэрэгжүүлэх: request.auth объект нь null [S3] биш эсэхийг шалгаснаар бүх эмзэг замууд хүчинтэй хэрэглэгчийн сесс шаардлагатай эсэхийг шалгаарай.
  • Identity-Based Access-ийг хэрэгжүүлэх: Хэрэглэгчийн UID (request.auth.uid)-г баримт доторх талбар эсвэл баримт бичгийн ID-тай харьцуулах дүрмийг тохируулж, хэрэглэгчид зөвхөн [S3] өгөгдөлдөө хандах боломжтой.
  • Зөвшөөрлийн хамрах хүрээ: Цуглуулгын хувьд дэлхийн орлуулагч тэмдэгтээс зайлсхий. Үүний оронд [S2]-ийн болзошгүй халдлагыг багасгахын тулд цуглуулга болон дэд цуглуулга бүрийн тодорхой дүрмийг тодорхойл.
  • Emulator Suite-ээр баталгаажуулах: Аюулгүй байдлын дүрмийг дотооддоо туршихын тулд Firebase Emulator Suite-г ашиглана уу. Энэ нь [S2] амьд орчинд байрлуулахаас өмнө янз бүрийн хэрэглэгчийн хувийн эсрэг хандалтын хяналтын логикийг шалгах боломжийг олгодог.

FixVibe үүнийг хэрхэн туршиж үздэг

FixVibe одоо үүнийг зөвхөн унших боломжтой BaaS скан болгон оруулсан байна. baas.firebase-rules нь орчин үеийн initializeApp(...) багцын дүрсийг багтаасан ижил гарал үүсэлтэй JavaScript багцуудаас Firebase тохиргоог гаргаж аваад Realtime Database, Firestore болон ZXCVFIXVIBETOKENVCuthentic-ээр шалгана. зөвхөн унших хүсэлтүүд. Firestore-ийн хувьд эхлээд root цуглуулгын жагсаалтыг оролддог; Жагсаалтыг хаасан үед users, accounts, customers, orders, orders, users, users, messages, admin, settings. Энэ нь зөвхөн амжилттай, нэрээ нууцалсан уншлага эсвэл жагсаалтыг мэдээлдэг бөгөөд хэрэглэгчийн баримт бичгийн агуулгыг бичих, устгах, хадгалахгүй.