Bosh sahifa Wiki Input validation

Input validation

Input validation — foydalanuvchi yoki tashqi tizimdan kelgan ma’lumotni belgilangan qoidalar asosida tekshirish jarayoni. Bu web ilova, API, forma, database va xavfsizlik tizimlarida noto‘g‘ri yoki zararli ma’lumotlarni qayta ishlashdan oldin nazorat qilish uchun ishlatiladi.

Input validation dasturga kirayotgan ma’lumotning turi, formati, uzunligi, chegarasi va ruxsat etilgan qiymatlarga mosligini tekshiradi.

Vazifasi

Input validation quyidagi vazifalarni bajaradi:

  • noto‘g‘ri ma’lumotni rad qilish;
  • foydalanuvchi xatolarini aniqlash;
  • databasega yaroqsiz qiymat tushishini oldini olish;
  • XSS va SQL Injection xavfini kamaytirish;
  • API request formatini nazorat qilish;
  • biznes qoidalariga mos ma’lumot qabul qilish;
  • server xatolarini kamaytirish;
  • ma’lumot sifatini saqlash.

Masalan, email maydoniga [email protected] kabi email formatidagi qiymat kiritilishi kerak. Oddiy matn yoki noto‘g‘ri format rad qilinishi mumkin.

Input validation qanday ishlaydi?

Input validation ma’lumot tizimga kirgan joyda bajariladi.

Oddiy jarayon:

  • foydalanuvchi forma yoki API orqali ma’lumot yuboradi;
  • backend yoki frontend qiymatni qoidalar bilan solishtiradi;
  • qiymat mos bo‘lsa, keyingi bosqichga o‘tadi;
  • mos bo‘lmasa, xatolik qaytariladi;
  • noto‘g‘ri qiymat database yoki biznes logikaga o‘tkazilmaydi.

Validation frontendda ham, backendda ham bo‘lishi mumkin. Xavfsizlik nuqtai nazaridan backend validation asosiy hisoblanadi.

Frontend validation

Frontend validationbrowser yoki client ilova ichida bajariladigan tekshiruv.

Frontend validation vazifalari:

  • foydalanuvchiga tezkor xatolik ko‘rsatish;
  • forma to‘ldirishni qulay qilish;
  • noto‘g‘ri qiymatni serverga yubormaslik;
  • UX sifatini oshirish.

Lekin frontend validationni aylanib o‘tish mumkin. Shuning uchun u backend validation o‘rnini bosa olmaydi.

Backend validation

Backend validationserver tomonida bajariladigan tekshiruv. Bu validation majburiy hisoblanadi, chunki backend tashqi requestlarga ishonmasligi kerak.

Backend validation quyidagilarni tekshiradi:

Backend noto‘g‘ri qiymatni biznes logika yoki databasega o‘tkazmasligi kerak.

Type validation

Type validation — qiymatning kutilgan turga mosligini tekshiradi.

Misollar:

  • age — integer;
  • price — decimal;
  • is_active — boolean;
  • email — string;
  • created_at — datetime;
  • tags — list.

Agar age maydoniga matn yuborilsa, validation xatosi qaytishi kerak.

Format validation

Format validation — qiymat belgilangan formatga mosligini tekshiradi.

Format validation misollari:

  • email formati;
  • telefon raqami;
  • sana formati;
  • UUID;
  • URL;
  • slug;
  • postal code;
  • username.

Masalan, username faqat harf, raqam va _ belgisidan iborat bo‘lishi mumkin.

Length validation

Length validation — matn, ro‘yxat yoki fayl uzunligini tekshiradi.

Tekshiriladigan jihatlar:

  • minimal uzunlik;
  • maksimal uzunlik;
  • belgilar soni;
  • ro‘yxatdagi elementlar soni;
  • fayl hajmi;
  • password uzunligi.

Masalan, parol kamida 8 ta belgidan iborat bo‘lishi kerak bo‘lishi mumkin.

Range validation

Range validation — raqam yoki sana ma’lum oraliqda ekanini tekshiradi.

Misollar:

  • yosh 0 dan 120 gacha;
  • narx 0 dan katta;
  • chegirma 0–100 oralig‘ida;
  • sana kelajakda bo‘lishi;
  • sahifa raqami 1 dan katta bo‘lishi.

Bu validation noto‘g‘ri biznes qiymatlarni cheklaydi.

Allowlist

Allowlist — faqat oldindan ruxsat berilgan qiymatlarni qabul qilish usuli.

Allowlist misollari:

  • role: user, admin, moderator;
  • status: draft, published, archived;
  • order: asc, desc;
  • language: uz, en, ru.

Allowlist xavfsizroq yondashuv hisoblanadi, chunki faqat aniq ruxsat berilgan qiymatlar qabul qilinadi.

Denylist

Denylist — taqiqlangan qiymatlar yoki belgilar ro‘yxatini rad qilish usuli.

Denylist quyidagilar uchun ishlatilishi mumkin:

  • xavfli so‘zlar;
  • maxsus belgilar;
  • noto‘g‘ri fayl turlari;
  • taqiqlangan domainlar.

Denylist hamma xavfli holatni oldindan bilishni talab qiladi. Shu sababli xavfsizlikda allowlist ko‘proq ishonchli yondashuv hisoblanadi.

Validation va sanitization farqi

Input validation va sanitization bir-biriga yaqin, lekin farqli tushunchalar.

  • validation qiymat mos yoki mos emasligini tekshiradi;
  • sanitization qiymatni tozalaydi yoki xavfsiz shaklga keltiradi;
  • validation noto‘g‘ri qiymatni rad qilishi mumkin;
  • sanitization qiymat ichidan xavfli qismlarni olib tashlashi mumkin.

Masalan, email formatini tekshirish validation, HTML taglarni olib tashlash sanitization hisoblanadi.

Xavfsizlikdagi o‘rni

Input validation XSS, SQL Injection, command injection va boshqa zaifliklar xavfini kamaytiradi. Lekin u yakka o‘zi to‘liq himoya emas.

Xavfsizlikda validation bilan birga quyidagilar ham kerak bo‘ladi:

Validation dasturga kiradigan ma’lumotni nazorat qiluvchi birinchi qatlamlardan biridir.

Dasturlashdagi o‘rni

Input validation web forma, API, admin panel, mobile ilova va database bilan ishlaydigan barcha tizimlarda muhim hisoblanadi. U noto‘g‘ri yoki zararli ma’lumotni dastur ichki logikasiga o‘tishidan oldin tekshiradi.

Bog‘liq tushunchalar

Validation, Sanitization, XSS, SQL Injection, API, Form, Backend, Frontend, JSON, Security