Firebase സുരക്ഷാ നിയമങ്ങൾ ഫയർസ്റ്റോർ, റിയൽടൈം ഡാറ്റാബേസ്, ക്ലൗഡ് സ്റ്റോറേജ് [S1] എന്നിവയിൽ ഡാറ്റ പരിരക്ഷിക്കുന്നതിന് ഗ്രാനുലാർ, സെർവർ-നിർവഹിച്ച സംവിധാനം നൽകുന്നു. Firebase ആപ്ലിക്കേഷനുകൾ ക്ലയൻ്റ് വശത്ത് നിന്ന് നേരിട്ട് ഈ ക്ലൗഡ് സേവനങ്ങളുമായി ഇടപഴകുന്നതിനാൽ, ഈ നിയമങ്ങൾ ബാക്കെൻഡ് ഡാറ്റ [S1]-ലേക്കുള്ള അനധികൃത ആക്സസ് തടയുന്ന ഒരേയൊരു തടസ്സത്തെ പ്രതിനിധീകരിക്കുന്നു.
അനുവദനീയമായ നിയമങ്ങളുടെ സ്വാധീനം
തെറ്റായി ക്രമീകരിച്ച നിയമങ്ങൾ [S2] ഗണ്യമായ ഡാറ്റ എക്സ്പോഷറിലേക്ക് നയിച്ചേക്കാം. നിയമങ്ങൾ അമിതമായി അനുവദനീയമായി സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ-ഉദാഹരണത്തിന്, ആഗോള ആക്സസ് അനുവദിക്കുന്ന സ്ഥിരസ്ഥിതി 'ടെസ്റ്റ് മോഡ്' ക്രമീകരണങ്ങൾ ഉപയോഗിച്ച് - പ്രോജക്റ്റ് ഐഡിയെക്കുറിച്ച് അറിവുള്ള ഏതൊരു ഉപയോക്താവിനും [S2] മുഴുവൻ ഡാറ്റാബേസ് ഉള്ളടക്കവും വായിക്കാനോ പരിഷ്ക്കരിക്കാനോ ഇല്ലാതാക്കാനോ കഴിയും. ഇത് എല്ലാ ക്ലയൻ്റ്-സൈഡ് സുരക്ഷാ നടപടികളെയും മറികടക്കുന്നു, ഇത് സെൻസിറ്റീവ് ഉപയോക്തൃ വിവരങ്ങൾ നഷ്ടപ്പെടുന്നതിനും അല്ലെങ്കിൽ [S2] സേവനത്തിൻ്റെ മൊത്തത്തിലുള്ള തടസ്സത്തിനും കാരണമാകും.
മൂലകാരണം: അപര്യാപ്തമായ ഓതറൈസേഷൻ ലോജിക്
ഉപയോക്തൃ ഐഡൻ്റിറ്റി അല്ലെങ്കിൽ റിസോഴ്സ് ആട്രിബ്യൂട്ടുകൾ [S3] അടിസ്ഥാനമാക്കി ആക്സസ് നിയന്ത്രിക്കുന്ന നിർദ്ദിഷ്ട വ്യവസ്ഥകൾ നടപ്പിലാക്കുന്നതിലെ പരാജയമാണ് ഈ കേടുപാടുകളുടെ മൂല കാരണം. request.auth ഒബ്ജക്റ്റ് [S3] സാധൂകരിക്കാത്ത പ്രൊഡക്ഷൻ എൻവയോൺമെൻ്റുകളിൽ ഡെവലപ്പർമാർ പതിവായി സ്ഥിരസ്ഥിതി കോൺഫിഗറേഷനുകൾ സജീവമാക്കുന്നു. request.auth മൂല്യനിർണ്ണയം ചെയ്യാതെ, സിസ്റ്റത്തിന് ഒരു നിയമാനുസൃത ആധികാരിക ഉപയോക്താവും ഒരു അജ്ഞാത അപേക്ഷകനും തമ്മിൽ വേർതിരിച്ചറിയാൻ കഴിയില്ല [S3].
സാങ്കേതിക പരിഹാരങ്ങൾ
ഒരു Firebase പരിതസ്ഥിതി സുരക്ഷിതമാക്കുന്നതിന് ഓപ്പൺ ആക്സസിൽ നിന്ന് പ്രിൻസിപ്പൽ ഓഫ് ലിസ്റ്റ് പ്രിവിലേജ് മോഡലിലേക്ക് മാറേണ്ടതുണ്ട്.
- പ്രാമാണീകരണം നടപ്പിലാക്കുക:
request.authഒബ്ജക്റ്റ് ശൂന്യമല്ല [S3] എന്ന് പരിശോധിച്ച് എല്ലാ സെൻസിറ്റീവ് പാഥുകൾക്കും സാധുവായ ഒരു ഉപയോക്തൃ സെഷൻ ആവശ്യമാണെന്ന് ഉറപ്പാക്കുക. - ഐഡൻ്റിറ്റി അടിസ്ഥാനമാക്കിയുള്ള ആക്സസ് നടപ്പിലാക്കുക: ഉപയോക്താക്കൾക്ക് അവരുടെ സ്വന്തം ഡാറ്റ [S3] മാത്രമേ ആക്സസ് ചെയ്യാൻ കഴിയൂ എന്ന് ഉറപ്പാക്കാൻ ഉപയോക്താവിൻ്റെ യുഐഡി (
request.auth.uid) ഡോക്യുമെൻ്റിനുള്ളിലെ ഒരു ഫീൽഡുമായോ ഡോക്യുമെൻ്റ് ഐഡിയുമായോ താരതമ്യം ചെയ്യുന്ന നിയമങ്ങൾ കോൺഫിഗർ ചെയ്യുക. - ഗ്രാനുലാർ പെർമിഷൻ സ്കോപ്പിംഗ്: ശേഖരങ്ങൾക്കായി ആഗോള വൈൽഡ്കാർഡുകൾ ഒഴിവാക്കുക. പകരം, ആക്രമണ സാധ്യതയുള്ള [S2] പരമാവധി കുറയ്ക്കുന്നതിന് ഓരോ ശേഖരത്തിനും ഉപ-ശേഖരത്തിനും പ്രത്യേക നിയമങ്ങൾ നിർവ്വചിക്കുക.
- എമുലേറ്റർ സ്യൂട്ട് വഴിയുള്ള മൂല്യനിർണ്ണയം: പ്രാദേശികമായി സുരക്ഷാ നിയമങ്ങൾ പരിശോധിക്കുന്നതിന് Firebase എമുലേറ്റർ സ്യൂട്ട് ഉപയോഗിക്കുക. [S2] ഒരു തത്സമയ പരിതസ്ഥിതിയിലേക്ക് വിന്യസിക്കുന്നതിന് മുമ്പ് വിവിധ ഉപയോക്തൃ വ്യക്തിത്വങ്ങൾക്കെതിരായ ആക്സസ് കൺട്രോൾ ലോജിക് പരിശോധിക്കുന്നതിന് ഇത് അനുവദിക്കുന്നു.
എങ്ങനെയാണ് FixVibe അതിനായി പരീക്ഷിക്കുന്നത്
FixVibe ഇപ്പോൾ ഇത് ഒരു റീഡ്-ഒൺലി BaaS സ്കാൻ ആയി ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. baas.firebase-rules, ആധുനിക initializeApp(...) ബണ്ടിൽ രൂപങ്ങൾ ഉൾപ്പെടെ, അതേ-ഉത്ഭവ ജാവാസ്ക്രിപ്റ്റ് ബണ്ടിലുകളിൽ നിന്ന് Firebase കോൺഫിഗറേഷൻ എക്സ്ട്രാക്റ്റുചെയ്യുന്നു, തുടർന്ന് തത്സമയ ഡാറ്റാബേസ്, ഫയർസ്റ്റോർ, ZBXCVETOR എന്നിവ ഉപയോഗിച്ച് പരിശോധിക്കുന്നു. ആധികാരികതയില്ലാത്ത വായന-മാത്രം അഭ്യർത്ഥനകൾ. ഫയർസ്റ്റോറിനായി, ഇത് ആദ്യം റൂട്ട് കളക്ഷൻ ലിസ്റ്റിംഗ് പരീക്ഷിക്കുന്നു; ലിസ്റ്റിംഗ് ബ്ലോക്ക് ചെയ്യപ്പെടുമ്പോൾ, users, accounts, customers, orders, ZXCV6VIXCV6 messages, admin, settings. ഇത് വിജയകരമായ അജ്ഞാത വായനകളോ ലിസ്റ്റിംഗുകളോ മാത്രമേ റിപ്പോർട്ട് ചെയ്യുന്നുള്ളൂ കൂടാതെ ഉപഭോക്തൃ പ്രമാണ ഉള്ളടക്കങ്ങൾ എഴുതുകയോ ഇല്ലാതാക്കുകയോ സംഭരിക്കുകയോ ചെയ്യുന്നില്ല.
