Bosh sahifa Wiki CSP

CSP

CSP — Content Security Policy, ya’ni browserga sahifa qaysi manbalardan script, style, image, font va boshqa resurslarni yuklashi mumkinligini bildiradigan web xavfsizlik mexanizmi. CSP HTTP header yoki HTML meta tag orqali beriladi.

CSP asosan XSS hujumlarining ta’sirini kamaytirish va sahifadagi resurslar manbasini nazorat qilish uchun ishlatiladi.

Vazifasi

CSP quyidagi vazifalarni bajaradi:

  • inline script bajarilishini cheklash;
  • faqat ruxsat berilgan manbalardan script yuklash;
  • XSS hujumlari ta’sirini kamaytirish;
  • tashqi resurslar manbasini nazorat qilish;
  • sahifaga zararli kod qo‘shilish xavfini kamaytirish;
  • iframe, image, font, style va connect manbalarini boshqarish;
  • xavfsizlik buzilishlari haqida report olish.

CSP sahifa xavfsizligini browser darajasida kuchaytiradi.

CSP qanday ishlaydi?

Server browserga Content-Security-Policy headerini yuboradi. Browser shu policy asosida sahifa resurslarini yuklash yoki bloklashni hal qiladi.

Oddiy jarayon:

  • browser sahifani yuklaydi;
  • server CSP header qaytaradi;
  • sahifadagi script, style, image va boshqa resurslar tekshiriladi;
  • policy ruxsat bergan resurslar yuklanadi;
  • ruxsat berilmagan resurslar bloklanadi;
  • kerak bo‘lsa violation report yuboriladi.

CSP server va browser o‘rtasida ishlaydigan xavfsizlik qoidasi hisoblanadi.

Content-Security-Policy header

CSP odatda HTTP header orqali beriladi.

Misol:

Content-Security-Policy: default-src 'self'; script-src 'self'; img-src 'self' https:;

Bu policy:

  • asosiy resurslar faqat o‘z saytidan yuklanishini;
  • scriptlar faqat o‘z saytidan kelishini;
  • rasmlar o‘z sayt yoki HTTPS manbalardan yuklanishini bildiradi.

default-src

default-src — CSP ichidagi umumiy fallback directive. Agar boshqa directive ko‘rsatilmagan bo‘lsa, browser shu qoidaga tayanadi.

Misol:

default-src 'self'

Bu sahifadagi ko‘p resurslar faqat shu origin’dan yuklanishini bildiradi.

script-src

script-srcJavaScript manbalarini boshqaradi. XSS himoyasida eng muhim directive’lardan biridir.

script-src orqali:

  • qaysi domainlardan script yuklanishi belgilanadi;
  • inline script cheklanishi mumkin;
  • eval ishlatilishi cheklanishi mumkin;
  • nonce yoki hash orqali ruxsat berish mumkin.

Masalan:

script-src 'self' https://cdn.example.com

style-src

style-srcCSS manbalarini boshqaradi. U tashqi style fayllar va inline stylelarga ta’sir qilishi mumkin.

Misol:

style-src 'self'

Bu CSS faqat shu origin’dan yuklanishini bildiradi.

img-src

img-src — rasm manbalarini boshqaradi.

Misol:

img-src 'self' https: data:

Bu rasm o‘z sayt, HTTPS manbalar va data: URI orqali yuklanishi mumkinligini bildiradi.

connect-src

connect-srcJavaScript orqali yuboriladigan ulanishlarni boshqaradi.

U quyidagilarga ta’sir qiladi:

  • fetch;
  • XMLHttpRequest;
  • WebSocket;
  • EventSource;
  • API requestlar.

Masalan, frontend faqat https://api.uzbekdevs.uz bilan ishlashi kerak bo‘lsa, connect-src orqali cheklash mumkin.

frame-src

frame-src — sahifaga iframe orqali qaysi manbalarni joylash mumkinligini belgilaydi.

U quyidagilar bilan bog‘liq:

Ayrim holatlarda frame-ancestors sahifani kim iframe ichida ko‘rsata olishini belgilaydi.

nonce

Nonce — har bir response uchun yaratiladigan tasodifiy qiymat. CSP’da ma’lum inline scriptga ruxsat berish uchun ishlatiladi.

Jarayon:

Nonce inline scriptlarni to‘liq ochib yubormasdan, aniq ruxsat berish imkonini beradi.

Hash asosida ruxsat berish

CSP ma’lum inline script yoki style uchun hash orqali ruxsat berishi mumkin. Bunda script matni hash qilinadi va policy ichida ko‘rsatiladi.

Bu usulda:

  • script matni o‘zgarsa, hash mos kelmaydi;
  • faqat aniq script bajariladi;
  • begona inline script bloklanadi.

Hash yondashuvi statik inline scriptlarda uchrashi mumkin.

Report-Only rejimi

Content-Security-Policy-Report-Only — CSP qoidalarini bloklamasdan, faqat buzilishlar haqida report yuborish rejimi.

Bu rejim:

  • policy test qilish;
  • mavjud sahifani buzmasdan kuzatish;
  • qaysi resurslar bloklanishini oldindan bilish;
  • CSP’ni bosqichma-bosqich joriy qilish uchun ishlatiladi.

Report-Only production tizimda policy sozlashni tekshirishga yordam beradi.

CSP va XSS

CSP XSS hujumlarini to‘liq yo‘q qilmaydi, lekin ularning ta’sirini kamaytiradi.

CSP XSSga qarshi:

  • inline scriptlarni bloklaydi;
  • begona script manbalarini cheklaydi;
  • eval ishlatilishini bloklashi mumkin;
  • faqat ruxsat etilgan scriptlarga ishlashga ruxsat beradi.

XSS himoyasining asosiy qismi baribir input validation, sanitization va output escaping bilan bog‘liq.

CSP va frontend

Frontend ilovalarda CSP script, style, API va media manbalarini tartibga soladi.

Frontendda CSP quyidagilar bilan bog‘liq:

CSP noto‘g‘ri sozlansa, sahifadagi kerakli script yoki style ham bloklanishi mumkin.

Dasturlashdagi o‘rni

CSP web sahifada resurslar qayerdan yuklanishini nazorat qiluvchi browser xavfsizlik mexanizmidir. U XSS ta’sirini kamaytirish va tashqi resurslar ustidan nazorat o‘rnatish uchun ishlatiladi.

Bog‘liq tushunchalar

Web security, XSS, Browser, HTTP header, JavaScript, Inline script, Nonce, Hash, iframe, Frontend, Security