Bosh sahifa Wiki XSS

XSS

XSS — Cross-Site Scripting, ya’ni web sahifaga zararli JavaScript yoki boshqa client-side kod kiritish bilan bog‘liq xavfsizlik zaifligi. XSS hujumida foydalanuvchi brauzerida hujumchi tomonidan kiritilgan kod bajarilishi mumkin.

XSS web ilovalarda foydalanuvchi kiritgan ma’lumotlar to‘g‘ri tekshirilmasa, tozalanmasa yoki sahifaga xavfsiz chiqarilmasa yuzaga keladi.

Vazifasi

XSS tushunchasi web xavfsizlikdagi zaiflik turini bildiradi. U foydalanuvchi brauzerida zararli script bajarilishiga olib kelishi mumkin.

XSS orqali quyidagi xavflar yuzaga keladi:

  • foydalanuvchi session ma’lumotlarini o‘g‘irlash;
  • sahifa ko‘rinishini o‘zgartirish;
  • foydalanuvchi nomidan amal bajarish;
  • zararli link yoki forma ko‘rsatish;
  • cookie yoki tokenlarni o‘qishga urinish;
  • phishing sahifa yaratish;
  • foydalanuvchini boshqa saytga yo‘naltirish;
  • browser ichida zararli JavaScript bajarish.

Masalan, komment yozish joyiga kiritilgan zararli script boshqa foydalanuvchilar sahifani ochganda ishga tushsa, bu XSS hisoblanadi.

XSS qanday paydo bo‘ladi?

XSS foydalanuvchi kiritgan ma’lumot sahifaga xavfsiz ishlov berilmasdan chiqarilganda paydo bo‘ladi.

Oddiy jarayon:

  • foydalanuvchi forma yoki URL orqali ma’lumot yuboradi;
  • tizim bu ma’lumotni yetarli tekshirmaydi;
  • ma’lumot HTML sahifaga chiqariladi;
  • agar ma’lumot ichida script bo‘lsa, browser uni kod sifatida bajaradi;
  • natijada zararli JavaScript foydalanuvchi brauzerida ishlaydi.

XSS server, frontend yoki template darajasidagi noto‘g‘ri ishlov sababli yuzaga kelishi mumkin.

JavaScript bilan bog‘liqligi

XSS ko‘pincha JavaScript bilan bog‘liq bo‘ladi. Chunki browser sahifada JavaScript kodini bajaradi.

XSS’da JavaScript orqali quyidagilar bajarilishi mumkin:

  • DOM elementlarini o‘zgartirish;
  • formadagi qiymatlarni o‘qish;
  • foydalanuvchini boshqa sahifaga yo‘naltirish;
  • browser orqali request yuborish;
  • sahifaga soxta element qo‘shish;
  • foydalanuvchi harakatlarini kuzatish.

Zararli script sahifa ichida oddiy frontend kod kabi bajarilishi mumkin.

Stored XSS

Stored XSS — zararli script server yoki database’da saqlanib qoladigan XSS turi. Bu eng xavfli XSS turlaridan biri hisoblanadi, chunki script sahifani ochgan har bir foydalanuvchida bajarilishi mumkin.

Stored XSS quyidagi joylarda uchraydi:

  • kommentlar;
  • forum postlari;
  • profil bio qismi;
  • mahsulot sharhlari;
  • chat xabarlari;
  • admin panelga keladigan foydalanuvchi ma’lumotlari.

Masalan, kimdir UzbekDevs’dagi komment maydoniga zararli script kiritib, u database’da saqlansa va boshqa foydalanuvchilarga ko‘rinsa, bu Stored XSS bo‘lishi mumkin.

Reflected XSS

Reflected XSS — zararli kod URL yoki request orqali yuborilib, server javobida darhol sahifaga qaytariladigan XSS turi. Bunda zararli kod odatda link ichida bo‘ladi.

Reflected XSS jarayoni:

  • hujumchi maxsus zararli URL tayyorlaydi;
  • foydalanuvchi shu linkni ochadi;
  • server URL ichidagi qiymatni sahifaga chiqaradi;
  • browser zararli scriptni bajaradi.

Bu turdagi XSS qidiruv sahifalari, error sahifalar yoki URL parametrlarini sahifaga chiqaradigan joylarda uchrashi mumkin.

DOM-based XSS

DOM-based XSS — zaiflik serverda emas, browserdagi JavaScript kodida yuzaga keladigan XSS turi. Bunda frontend kod URL, hash, query yoki boshqa manbadan kelgan qiymatni xavfsiz ishlovsiz DOM ichiga joylaydi.

DOM-based XSS quyidagi holatlarda paydo bo‘lishi mumkin:

  • location.hash qiymatini HTML sifatida chiqarish;
  • URL query qiymatini sahifaga to‘g‘ridan-to‘g‘ri qo‘yish;
  • innerHTML orqali foydalanuvchi ma’lumotini joylash;
  • client-side template’da escape qilmaslik;
  • frontend router qiymatlarini noto‘g‘ri ishlatish.

DOM-based XSS frontend kod xavfsizligiga bevosita bog‘liq.

HTML injection

HTML injection — sahifaga foydalanuvchi kiritgan HTML kodning xavfsiz ishlovsiz qo‘shilishi. Bu har doim JavaScript bajarilishini anglatmasligi mumkin, lekin XSS’ga olib kelishi mumkin.

HTML injection orqali:

  • sahifa dizayni buzilishi mumkin;
  • soxta forma qo‘shilishi mumkin;
  • phishing elementi yaratilishi mumkin;
  • zararli script kiritilishi mumkin;
  • foydalanuvchi chalg‘itilishi mumkin.

HTML injection XSS bilan yaqin bog‘liq tushuncha hisoblanadi.

Script injection

Script injection — sahifaga zararli script kod kiritilishi. Bu XSS’ning asosiy shakllaridan biridir.

Script injection quyidagi joylarda bo‘lishi mumkin:

Script injection browser kodni ma’lumot sifatida emas, bajariladigan script sifatida qabul qilganda yuzaga keladi.

Input validation

Input validation — foydalanuvchi kiritgan ma’lumot belgilangan qoidalarga mosligini tekshirish. XSS xavfini kamaytirishda input validation muhim, lekin yakka o‘zi yetarli bo‘lmasligi mumkin.

Input validation quyidagilarni tekshiradi:

  • qiymat turi;
  • uzunlik;
  • ruxsat etilgan belgilar;
  • format;
  • kutilgan maydon turi;
  • noto‘g‘ri HTML yoki script belgilari.

Masalan, yosh maydoniga faqat raqam qabul qilish input validation hisoblanadi.

Output escaping

Output escaping — ma’lumotni HTML sahifaga chiqarishda maxsus belgilarni xavfsiz ko‘rinishga o‘tkazish. Bu XSS himoyasining asosiy usullaridan biridir.

Escaping jarayonida:

  • < belgisi HTML tag sifatida ishlamasligi uchun o‘zgartiriladi;
  • > belgisi xavfsiz ko‘rinishga o‘tkaziladi;
  • qo‘shtirnoq va apostrof attribute ichida xavfsizlanadi;
  • foydalanuvchi kiritgan script matn sifatida ko‘rinadi, kod sifatida bajarilmaydi.

Output escaping ma’lumot qayerga chiqarilayotganiga qarab farq qiladi: HTML, attribute, JavaScript, URL yoki CSS context.

Sanitization

Sanitization — foydalanuvchi kiritgan ma’lumotdan xavfli HTML, script yoki attribute qismlarini olib tashlash yoki xavfsiz shaklga keltirish jarayoni.

Sanitization quyidagi joylarda kerak bo‘lishi mumkin:

Agar tizim foydalanuvchiga cheklangan HTML ishlatishga ruxsat bersa, sanitization muhim bo‘ladi.

Content Security Policy

CSP — Content Security Policy. Bu browserga qaysi manbalardan script, style, image yoki boshqa resurslar yuklanishi mumkinligini bildiradigan xavfsizlik mexanizmi.

CSP XSS ta’sirini kamaytirishga yordam beradi.

CSP orqali:

  • inline scriptlarni cheklash;
  • faqat ruxsat berilgan domainlardan script yuklash;
  • eval ishlatilishini cheklash;
  • zararli script bajarilishini kamaytirish;
  • sahifa resurslarini nazorat qilish mumkin.

CSP XSS himoyasining qo‘shimcha qatlamidir.

HttpOnlycookie’ni JavaScript orqali o‘qishni cheklaydigan cookie atributi. Agar cookie HttpOnly bo‘lsa, JavaScript document.cookie orqali uni o‘qiy olmaydi.

HttpOnly quyidagilar uchun muhim:

HttpOnly XSS’ni yo‘q qilmaydi, lekin uning zararini kamaytiradi.

XSS va CSRF farqi

XSS va CSRF web xavfsizlikdagi ikki xil zaiflikdir.

Farqlar:

  • XSS browserda zararli script bajarilishiga olib keladi;
  • CSRF foydalanuvchi nomidan ruxsatsiz request yuborishga qaratiladi;
  • XSS sahifa ichidagi kod bajarilishi bilan bog‘liq;
  • CSRF cookie avtomatik yuborilishidan foydalanadi;
  • XSS orqali sahifadagi token yoki ma’lumotlar o‘qilishi mumkin;
  • CSRF’da hujumchi odatda response’ni o‘qiy olmaydi.

Agar tizimda XSS mavjud bo‘lsa, CSRF himoyasi ham zaiflashishi mumkin.

XSS va CORS farqi

XSS va CORS ham alohida tushunchalar.

  • XSS — sahifa ichida zararli script bajarilishi;
  • CORSbrowser boshqa originlardan resurs o‘qishini boshqaradigan mexanizm;
  • XSS ilova ichidagi ma’lumot chiqarish xatosidan kelib chiqadi;
  • CORS server response’larini cross-origin o‘qishga ruxsat berish yoki bermaslikni belgilaydi;
  • CORS noto‘g‘ri sozlansa, ma’lumot oqishi mumkin;
  • XSS esa foydalanuvchi brauzerida zararli kod bajarilishiga olib keladi.

CORS XSS himoyasining o‘rnini bosmaydi.

XSS va frontend frameworklar

Ko‘p zamonaviy frontend frameworklar ma’lumotni sahifaga chiqarishda avtomatik escaping qiladi. Bu XSS xavfini kamaytiradi, lekin butunlay yo‘q qilmaydi.

XSS xavfi quyidagi holatlarda saqlanib qoladi:

  • raw HTML chiqarilganda;
  • innerHTML ishlatilganda;
  • markdown noto‘g‘ri sanitization qilinganda;
  • third-party scriptlar ishlatilganda;
  • URL qiymatlari xavfsiz tekshirilmaganda;
  • template escaping o‘chirib qo‘yilganda.

Framework ishlatilgani XSS bo‘lmaydi degani emas.

XSS himoya usullari

XSS’ga qarshi himoya bir nechta qatlamdan iborat bo‘ladi.

Asosiy himoya usullari:

XSS himoyasi input, output, cookie va browser policy darajalarida tashkil qilinadi.

Dasturlashdagi o‘rni

XSS web ilovalar xavfsizligida eng muhim zaifliklardan biridir. U foydalanuvchi kiritgan ma’lumotni sahifaga xavfsiz chiqarish, frontend kodni to‘g‘ri yozish va browser security mexanizmlarini to‘g‘ri ishlatish bilan bog‘liq.

XSS quyidagi tizimlarda e’tiborga olinadi:

  • blog va CMS tizimlari;
  • komment va forumlar;
  • admin panellar;
  • chat ilovalari;
  • internet do‘konlar;
  • SaaS platformalar;
  • markdown editorlar;
  • profil sahifalari;
  • frontend SPA ilovalar;
  • cookie-based authentication tizimlari.

XSS foydalanuvchi brauzerida zararli script bajarilishiga olib keladigan web xavfsizlik zaifligidir.

Bog‘liq tushunchalar

Web security, JavaScript, HTML injection, Script injection, Input validation, Sanitization, Output escaping, CSP, Cookie, CSRF, CORS, Security