Content Security Policy — brauzerga sahifa qaysi manbalardan script, style, image, frame va boshqa resurslarni yuklashi mumkinligini bildiradigan HTTP xavfsizlik siyosatidir. CSP cross-site scripting oqibatini cheklash, inline kodni nazorat qilish va sahifaning boshqa saytga embed qilinishini boshqarishga yordam beradi. U input validation va output escaping o‘rnini bosmaydi.
Yetkazish usuli
Server siyosatni Content-Security-Policy response headerida yuboradi. HTML <meta> elementi ayrim directive’larni bera oladi, ammo barcha imkoniyatga ega emas va document boshida joylashishi kerak. Header asosiy va ishonchli usuldir.
Content-Security-Policy-Report-Only buzilishni bloklamasdan report qiladi. U mavjud saytni kuzatib, qonuniy resurs manbalarini aniqlash uchun ishlatiladi. Report-only muvaffaqiyatli bo‘lgach enforcing header bosqichma-bosqich joriy etiladi.
Directive’lar
default-src alohida directive berilmagan resurs turlari uchun fallback. script-src, style-src, img-src, connect-src, font-src va frame-src tegishli manbalarni boshqaradi. object-src 'none' eski plugin kontentini taqiqlash uchun keng qo‘llanadi.
base-uri zararli <base> orqali relative URL yo‘nalishini o‘zgartirishni cheklaydi. form-action form qayerga yuborilishini, frame-ancestors sahifani kim iframe ichiga olishini belgilaydi. Oxirgisi clickjacking himoyasida muhim va meta orqali qo‘llanmaydi.
Nonce va hash
'unsafe-inline' inline scriptga ruxsat berib, CSPning muhim XSS himoyasini zaiflashtiradi. Server har response uchun kriptografik random nonce yaratib, header va ruxsat etilgan <script nonce="..."> elementiga qo‘yishi mumkin. Nonce foydalanuvchi inputidan kelmaydi va response’lar orasida qayta ishlatilmaydi.
Statik inline script uchun SHA hash beriladi. Browser element mazmunini hash bilan solishtiradi. Script o‘zgarsa siyosat ham yangilanadi. strict-dynamic nonce yoki hash bilan ishonilgan script yuklagan keyingi scriptlarga trustni tarqatishi mumkin; browser compatibility hisobga olinadi.
Xavflar
Keng wildcard, data:, barcha HTTPS manbalari yoki hujumchi fayl joylay oladigan CDN CSPni chetlab o‘tish imkonini beradi. JSONP, open redirect va user-upload domeni allowlist xavfsizligini buzishi mumkin. Host allowlist yolg‘iz zamonaviy XSSga qarshi yetarli emas.
DOM-based XSS dangerous sink orqali paydo bo‘lsa Trusted Types qo‘shimcha nazorat beradi. CSP violation reportlar sensitive URL yoki fragment saqlashi mumkin, shuning uchun report collector access va retention siyosatiga ega bo‘ladi.
Joriy etish
Avval default-src 'none' kabi qat’iy bazadan zarur directive’lar qo‘shish yoki mavjud saytda report-onlydan boshlash mumkin. Browser developer tools bloklangan resurs va directive’ni ko‘rsatadi. Third-party widget minimal manba va imkoniyat bilan izolyatsiya qilinadi.
Siyosat automated testda header mavjudligi, nonce uniqueness va xavfli tokenlar bo‘yicha tekshiriladi. CSP brauzerda ishlaydi; API client va server-side request uchun alohida xavfsizlik nazorati talab qilinadi.
Bir nechta siyosat
Brauzer bir response’da bir nechta CSP siyosat olsa ularni birgalikda, ya’ni eng cheklovchi kesishma sifatida qo‘llaydi. Ikki header bir-birini kengaytirmaydi. Reverse proxy va ilova alohida header qo‘shsa qonuniy resurs kutilmaganda bloklanishi mumkin. Report endpoint hujumchi yuborgan katta hajmli violation orqali DoS bo‘lmasligi uchun autentifikatsiyasiz bo‘lsa ham rate limit va size limitga ega bo‘ladi. report-sample debugging uchun script namunasi yuborishi mumkin; unda foydalanuvchi ma’lumoti bo‘lish ehtimoli sabab privacy nazorati kerak.
Siyosat templating engine foydalanuvchi qiymatini nonce, directive yoki URL ro‘yxatiga qo‘shishiga yo‘l qo‘ymaydi; aks holda header injection himoyani bekor qilishi mumkin.
Bog‘liq tushunchalar
Cross-site scripting, Nonce, Trusted Types, Clickjacking, Same-origin policy, HTTP security header