Veb-saytlarga qaratilgan hujumlar orasida XSS yoki Cross-Site Scripting eng keng tarqalganlaridan biri. Bu hujum turida tajovuzkor sayt sahifasiga zararli kod kiritishga va uni boshqa foydalanuvchilar brauzerida ishga tushirishga harakat qiladi. Natijada foydalanuvchining seansi o'g'irlanishi, parol va shaxsiy ma'lumotlar qo'lga kiritilishi mumkin. Bu kabi hujumlardan himoyalanishning eng samarali usullaridan biri Content Security Policy yoki CSP header'idan foydalanishdir. Bu yozuvda biz CSP qanday ishlashini, uni qanday to'g'ri sozlash kerakligini va keng tarqalgan xatolardan qanday qochish mumkinligini batafsil ko'rib chiqamiz.
CSP qanday ishlaydi
Content Security Policy bu maxsus HTTP header bo'lib, u brauzerga sahifada qaysi resurslar yuklanishi mumkin va qaysilari yuklanmasligi kerakligini aytadi. Boshqacha qilib aytganda, server brauzerga oldindan ro'yxat beradi va brauzer faqat shu ro'yxatdagi manbalardan resurs yuklaydi. Agar tajovuzkor zararli skriptni biror tarzda sahifaga kiritsa ham, brauzer uni ishga tushirmaydi chunki u ruxsat etilgan manbalar ro'yxatida yo'q.
CSP ning eng kuchli tomoni shundaki, u brauzer darajasida ishlaydi va serverdan qo'shimcha mantiq talab qilmaydi. Header sozlangandan keyin barcha himoya brauzer tomonidan amalga oshiriladi va bu juda tezkor va ishonchli. Bundan tashqari CSP nafaqat skriptlarni, balki suratlar, stillar, ramkalar va boshqa resurslarni ham nazorat qilishi mumkin.
Asosiy direktivalar
CSP header ichida bir nechta direktiva ishlatiladi va har biri o'z vazifasini bajaradi. Default-src bu umumiy fallback bo'lib, u qaysi manbalardan resurs yuklanishini belgilaydi. Script-src faqat skriptlar uchun ishlatiladi va uni alohida belgilash juda muhim chunki aynan skriptlar XSS hujumning asosiy maqsadi. Style-src stillar uchun, img-src suratlar uchun, frame-src esa ramkalar uchun ishlatiladi.
Har bir direktivada manbalar ro'yxati ko'rsatiladi. Self qiymati o'sha saytning o'zini anglatadi, none hech narsani ruxsat etmaydi, ma'lum domenlarni esa to'liq URL bilan ko'rsatish mumkin. Eng xavfsiz sozlama default-src self bilan boshlanadi va keyin kerakli manbalar bittadan qo'shiladi.
Sozlash misollari
Oddiy sayt uchun boshlang'ich CSP shu ko'rinishda bo'lishi mumkin. Default-src faqat o'z saytidan yuklashga ruxsat berib, script-src ga google fonts va analitika manbalarini qo'shish va style-src ga ham ushbu manbalarni qo'shish. Bu sozlama ko'pchilik oddiy saytlar uchun yetarli himoyani ta'minlaydi va aksariyat XSS hujumlarini to'xtatadi.
Murakkabroq saytlar uchun nonce yoki hash mexanizmlaridan foydalanish kerak. Nonce bu har bir sahifa yuklanishida o'zgaradigan tasodifiy belgi va u inline skriptlarga ruxsat berish uchun ishlatiladi. Bu juda kuchli mexanizm chunki tajovuzkor nonce qiymatini oldindan bilolmaydi. Hash esa skript matnining o'zidan hisoblanadi va faqat aynan shu mazmunli skript ishga tushishiga ruxsat beradi.
Keng tarqalgan xatolar
Birinchi keng tarqalgan xato unsafe-inline qiymatini script-src ga qo'shishdir. Bu CSP ning asosiy himoya mexanizmini deyarli butunlay yo'q qiladi chunki u inline skriptlarning barchasiga ruxsat beradi va aynan inline skriptlar XSS hujumning asosiy vositasidir. Agar inline skriptlardan foydalanish kerak bo'lsa, nonce yoki hash mexanizmidan foydalaning.
Ikkinchi xato yulduz belgisini keng ishlatishdir. Script-src yulduz qo'yish har qanday manbadan skript yuklashga ruxsat beradi va bu CSP ni faktik ravishda o'chiradi. Aniq domenlarni ro'yxatlash kerak, hatto bu ko'p qator yozish demak bo'lsa ham.
Report-only rejimi
CSP ni darhol majburiy holatga qo'yish risk hisoblanadi chunki ba'zi resurslar bloklanishi va sayt buzilishi mumkin. Shu sababli birinchi haftada report-only rejimida ishga tushirish tavsiya etiladi. Bu rejimda buzilishlar haqida hisobot olinadi lekin resurslar bloklanmaydi va siz xatolarni tinch tuzatishingiz mumkin. Keyin to'liq enforce rejimiga o'tish xavfsiz bo'ladi.
Sayt.uz amaliyot
Bizning xosting xizmatimizdan foydalanuvchilar orasida 73 foiz saytlarda CSP umuman sozlanmagan bo'ladi va bu jiddiy xavfsizlik tashvishi. CSP ni o'rnatgan saytlarda XSS bilan bog'liq hodisalar soni o'rtacha 89 foizga pasayadi statistikamiz bo'yicha.
Sayt.uz boshqaruv panelida CSP header'larni avtomatik sozlash imkoniyati mavjud va u standart konfiguratsiyalarni tezda qo'llab beradi. Biz murakkab saytlar uchun maxsus CSP audit xizmatini ham taklif qilamiz va u 320 ming so'mdan boshlanadi hamda sayt arxitekturasiga moslashtirilgan optimal sozlamalarni o'z ichiga oladi.