Bosh sahifa Wiki Sanitization

Sanitization

Sanitization — foydalanuvchi yoki tashqi tizimdan kelgan ma’lumotni xavfsiz ko‘rinishga keltirish, keraksiz yoki xavfli qismlarini olib tashlash jarayoni. Bu web xavfsizlikda, ayniqsa XSS xavfini kamaytirishda muhim tushuncha hisoblanadi.

Sanitization ma’lumotni rad qilishdan ko‘ra, uni tozalash yoki ruxsat etilgan shaklga keltirishga qaratilgan.

Vazifasi

Sanitization quyidagi vazifalarni bajaradi:

  • zararli HTML taglarni olib tashlash;
  • xavfli JavaScript kodni o‘chirish;
  • foydalanuvchi inputini xavfsiz ko‘rinishga keltirish;
  • rich text editor ma’lumotlarini tozalash;
  • markdown yoki HTML contentni nazorat qilish;
  • databasega tozalangan qiymat saqlash;
  • XSS xavfini kamaytirish;
  • output chiqarishda xavfsizlikni oshirish.

Masalan, foydalanuvchi kommentga <script> tag kiritgan bo‘lsa, sanitization bu tagni olib tashlashi mumkin.

Sanitization qanday ishlaydi?

Sanitization ma’lumotni tekshiradi va xavfli yoki ruxsat etilmagan qismlarini o‘zgartiradi yoki olib tashlaydi.

Oddiy jarayon:

  • input qiymat olinadi;
  • ruxsat etilgan va taqiqlangan elementlar aniqlanadi;
  • xavfli tag, attribute yoki script qismlar olib tashlanadi;
  • qiymat xavfsiz shaklga keltiriladi;
  • tozalangan ma’lumot saqlanadi yoki sahifaga chiqariladi.

Sanitization ayniqsa foydalanuvchiga cheklangan HTML yozishga ruxsat berilgan tizimlarda kerak bo‘ladi.

Validation bilan farqi

Sanitization va validation farqli vazifani bajaradi.

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

Masalan, username faqat harf va raqamdan iboratligini tekshirish validation. Komment ichidan zararli HTML taglarni olib tashlash sanitization.

HTML sanitization

HTML sanitizationHTML matn ichidan xavfli elementlarni olib tashlash jarayoni.

Odatda quyidagilar nazorat qilinadi:

  • <script> taglari;
  • onload, onclick kabi event attributelar;
  • javascript: URL qiymatlari;
  • xavfli iframe;
  • style ichidagi xavfli qiymatlar;
  • noma’lum yoki ruxsat etilmagan taglar.

HTML sanitization blog, forum, komment, CMS va rich text editorlarda ishlatiladi.

Allowlist sanitization

Allowlist sanitization faqat ruxsat berilgan tag va attributelarni qoldiradi.

Masalan, ruxsat berilishi mumkin:

  • <b>;
  • <i>;
  • <p>;
  • <ul>;
  • <li>;
  • <a href="">.

Boshqa taglar olib tashlanadi. Bu usul denylistga qaraganda aniqroq va xavfsizroq hisoblanadi.

Denylist sanitization

Denylist sanitization taqiqlangan elementlarni olib tashlaydi.

Masalan:

  • <script>;
  • <iframe>;
  • onclick;
  • onerror;
  • javascript:.

Denylist hamma xavfli variantlarni oldindan bilishni talab qiladi. Shu sababli xavfsizlikda allowlist yondashuvi ko‘proq ishlatiladi.

Output escaping bilan farqi

Sanitization va output escaping yaqin, lekin bir xil emas.

  • sanitization ma’lumot ichidan xavfli qismlarni olib tashlaydi;
  • output escaping maxsus belgilarni HTML tomonidan kod sifatida bajarilmaydigan shaklga o‘tkazadi;
  • sanitization contentni o‘zgartirishi mumkin;
  • escaping contentni matn sifatida ko‘rsatadi.

Agar HTML ishlatishga ruxsat berilmasa, escaping ko‘pincha to‘g‘riroq yondashuv bo‘ladi.

XSS bilan bog‘liqligi

Sanitization XSS xavfini kamaytirishda ishlatiladi. XSS foydalanuvchi kiritgan zararli script browserda bajarilganda yuzaga keladi.

Sanitization XSSga qarshi:

  • script taglarni olib tashlaydi;
  • event attribute’larni o‘chiradi;
  • xavfli URL schema’larni bloklaydi;
  • ruxsat etilmagan HTMLni tozalaydi;
  • rich text contentni nazorat qiladi.

Lekin sanitization noto‘g‘ri bajarilsa, XSS xavfi saqlanib qolishi mumkin.

Rich text editor

Rich text editor foydalanuvchiga formatlangan matn yozish imkonini beradi. Bunday tizimlarda sanitization muhim.

Rich text editorlarda:

  • bold va italic ruxsat berilishi mumkin;
  • linklar nazorat qilinadi;
  • rasm manbalari tekshiriladi;
  • script va event attributelar bloklanadi;
  • paste qilingan HTML tozalanadi.

Blog, CMS va forum tizimlarida bu ko‘p uchraydi.

Markdown sanitization

Markdown matn HTMLga aylantirilganda XSS xavfi paydo bo‘lishi mumkin. Shu sababli markdown natijasi ham sanitization qilinishi mumkin.

Markdown bilan xavfli holatlar:

  • HTML tag kiritish;
  • link ichida javascript: ishlatish;
  • image URL orqali zararli qiymat berish;
  • raw HTML ruxsat etilishi;
  • renderer noto‘g‘ri sozlanishi.

Markdown ishlatiladigan wiki yoki blog tizimlarida sanitization muhim.

File name sanitization

Sanitization faqat HTML uchun emas, fayl nomlari uchun ham ishlatiladi.

File name sanitization quyidagilarni cheklaydi:

  • path traversal belgilar;
  • maxsus belgilar;
  • juda uzun nomlar;
  • noto‘g‘ri extension;
  • boshqaruv belgilar;
  • bir xil nom konfliktlari.

Masalan, upload qilingan fayl nomi server file system uchun xavfsiz ko‘rinishga keltiriladi.

Dasturlashdagi o‘rni

Sanitization foydalanuvchi kiritgan ma’lumotni xavfsiz shaklga keltirish uchun ishlatiladi. U web ilovalarda XSS, HTML injection va noto‘g‘ri content saqlanishi xavfini kamaytiradi.

Sanitization quyidagi tizimlarda uchraydi:

  • blog va CMS;
  • komment tizimlari;
  • forumlar;
  • chat ilovalari;
  • admin panellar;
  • rich text editorlar;
  • markdown editorlar;
  • fayl upload tizimlari.

Bog‘liq tushunchalar

Input validation, Output escaping, XSS, HTML injection, Markdown, Rich text editor, CSP, Web security, Frontend, Security