NoSQL Injection — ishonchsiz kiritma NoSQL ma’lumotlar ombori so‘rovining tuzilishi yoki operatorlarini o‘zgartira oladigan zaiflikdir. Bu nom hujjatli bazalar, qidiruv tizimlari, key-value omborlari va o‘z so‘rov tiliga ega boshqa tizimlardagi turli hujumlarni umumlashtiradi. Oqibat autentifikatsiyani chetlab o‘tish, ruxsatsiz yozuvlarni o‘qish, ma’lumotni o‘zgartirish yoki qimmat so‘rov bilan xizmatni sekinlashtirish bo‘lishi mumkin.
Tuzilmaviy kiritma muammosi
SQL injection ko‘pincha matnli so‘rov biriktirish bilan bog‘lanadi. NoSQL tizimida esa so‘rov JSONga o‘xshash obyekt sifatida tuzilishi mumkin. Agar dastur foydalanuvchi yuborgan obyektni tekshirmasdan filterga qo‘shsa, oddiy qiymat o‘rniga taqqoslash, inkor yoki skript operatori kelishi ehtimoli paydo bo‘ladi. Demak, parametr matn emasligi avtomatik xavfsizlik bermaydi.
URL parser va web freymvork ham kutilmagan tur hosil qilishi mumkin. Dasturchi username satr bo‘ladi deb o‘ylaydi, ammo takroriy yoki qavsli parametr obyektga aylanishi mumkin. Dinamik tiplanadigan tilda bunday qiymat keyingi qatlamgacha tekshiruvsiz o‘tadi. Qidiruv endpointida foydalanuvchiga to‘liq query DSL yuborish imkonini berish ham operator va resurs nazoratini yo‘qotadi.
Himoya qatlamlari
Kirish sxemasi har bir maydonning turi, uzunligi, formati va ruxsat etilgan qiymatini belgilaydi. Oddiy identifikator kutilsa, faqat satr yoki aniq format qabul qilinadi; obyekt va massiv rad etiladi. So‘rov server tomonda ma’lum shablondan qurilib, foydalanuvchi qiymati faqat ma’lumot sifatida alohida joylashtiriladi. Operator nomlari va maydon tanlovi zarur bo‘lsa, ular allowlist orqali xaritalanadi.
Ma’lumotlar bazasi drayverining xavfsiz query builder yoki typed API’si qo‘lda JSON va skript yig‘ishdan afzal. Server tarafdagi JavaScript yoki erkin ifoda bajarish funksiyalari zarur bo‘lmasa o‘chiriladi. So‘rov chuqurligi, natija soni, vaqt va hisoblash xarajati cheklanadi. Indeksdan foydalana olmaydigan erkin regex kabi amallar xizmatni rad etishga olib kelmasligi uchun alohida siyosat talab qiladi.
Avtorizatsiya va kuzatuv
Kiritmani tozalash avtorizatsiya o‘rnini bosmaydi. Har bir so‘rov qaytargan obyekt foydalanuvchi yoki tenant vakolatiga mos filter bilan cheklanishi kerak. Ma’lumotlar bazasi hisobi ham faqat kerakli kolleksiya va amallarga ruxsat oladi. Shunda so‘rov qatlamidagi xato yuz bersa ham ta’sir doirasi kamayadi.
Sinovlar satr o‘rniga obyekt, kutilmagan operator, ortiqcha ichma-ichlik va juda qimmat filterlar yuborilganda tizim ularni rad etishini tekshiradi. Telemetriyada rad etilgan sxema xatolari, g‘ayrioddiy operatorlar, sekin so‘rovlar va katta natijalar kuzatiladi. Jurnalga maxfiy hujjat yoki to‘liq autentifikatsiya ma’lumoti yozilmaydi. Kutubxona va ma’lumotlar bazasi versiyalari yangilanib, ularning parser xususiyatlari hujjatlashtiriladi.
Ma’lumot modeli ta’siri
Tenant identifikatorini faqat foydalanuvchi yuborgan filterga qo‘shish yetarli emas, chunki murakkab mantiqiy operator uni chetlab o‘tishi mumkin. Tenant chegarasi server boshqaradigan so‘rov qatlamida majburiy birlashtiriladi yoki ma’lumot fizik jihatdan ajratiladi. Projection ham nazorat qilinadi: obyektga kirish ruxsati mavjud bo‘lsa-da, parol xeshi yoki ichki token kabi ayrim maydonlar qaytmasligi kerak. Aggregation pipeline qabul qilinadigan tizimlarda stage turlari, kolleksiya birlashtirish va chiqish hajmi alohida allowlistga muhtoj. Xavfsizlik testi aynan ishlatilayotgan drayver va parser versiyasida bajariladi.
Prepared statement atamasi barcha NoSQL mahsulotida bir xil kafolat bermaydi. Muhim belgi qiymat va query operatorining alohida kanalda qolishidir. ORM yoki ODM ham raw query imkoniyati orqali himoyani chetlab o‘tishi mumkin.
Bog‘liq tushunchalar
Injection, Input validation, Query builder, NoSQL, Authorization, Schema validation, Least privilege