Veb
Xavfsizlik headerlari: CSP, HSTS va boshqalar — skanerlarda A+ ga qanday chiqish
Qaysi HTTP xavfsizlik headerlari kerak, har biri nimadan himoya qiladi va nginx'da ularni qanday to'g'ri qo'shish mumkin — tayyor konfiguratsiya bilan.
· 7 daq. o'qish

Xavfsizlik headerlari — server har bir javob bilan brauzerga yuboradigan qo'shimcha ko'rsatmalar. Ular brauzerga sahifani qanday himoyalashni aytadi: faqat HTTPS orqali ochish, begona skriptlarni bajarmaslik, sahifani boshqa saytga ramka ichida joylashtirmaslik va hokazo.
Headerlar yo'qligi kiberxavfsizlik ekspertizasida va ochiq skanerlarda (masalan, securityheaders.com yoki Mozilla Observatory) eng tez ko'rinadigan kamchiliklardan biri. Yaxshi tomoni — ularni qo'shish odatda bir necha qator konfiguratsiya.
Asosiy headerlar va ularning vazifasi
Strict-Transport-Security (HSTS)
Brauzerga ushbu domenni belgilangan muddat davomida faqat HTTPS orqali ochishni buyuradi. Bu foydalanuvchi http:// bilan kirganda ham shifrlanmagan so'rov yuborilmasligini ta'minlaydi.
Strict-Transport-Security: max-age=31536000; includeSubDomains
includeSubDomains qo'shishdan oldin barcha subdomenlar HTTPS'da ishlashiga ishonch hosil qiling. preload direktivasini esa oqibatlarini tushungandan keyingina qo'shing: preload ro'yxatidan chiqish vaqt oladi.
Content-Security-Policy (CSP)
Eng kuchli va eng murakkab header. U sahifa qaysi manbalardan skript, stil, rasm, shrift yuklashi va qayerga so'rov yuborishi mumkinligini belgilaydi. To'g'ri sozlangan CSP XSS zaifliklarining ta'sirini sezilarli kamaytiradi.
Boshlang'ich qat'iy siyosat:
default-src 'self'; script-src 'self'; style-src 'self';
img-src 'self' data:; font-src 'self'; connect-src 'self';
object-src 'none'; base-uri 'self'; frame-ancestors 'self';
form-action 'self'
Muhim jihatlar:
'unsafe-inline'va'unsafe-eval'dan qoching — ular CSP himoyasining katta qismini bekor qiladi. Inline skript kerak bo'lsa,nonceyoki hash ishlating.- Tashqi xizmatlarni (analitika, to'lov vidjeti, xarita) aniq domen bilan qo'shing,
*bilan emas. frame-ancestorsclickjacking'dan himoya qiladi va zamonaviy brauzerlardaX-Frame-Optionso'rnini bosadi.
X-Content-Type-Options
X-Content-Type-Options: nosniff
Brauzerga fayl turini "taxmin qilmaslik"ni aytadi. Masalan, yuklangan matn fayli skript sifatida bajarilmaydi.
X-Frame-Options
X-Frame-Options: SAMEORIGIN
Sahifani boshqa saytlarda <iframe> ichida ochishni taqiqlaydi. CSP'dagi frame-ancestors bilan birga eski brauzerlar uchun qo'shib qo'yish foydali.
Referrer-Policy
Referrer-Policy: strict-origin-when-cross-origin
Boshqa saytga o'tilganda to'liq URL (ichidagi parametrlar, tokenlar) emas, faqat domen yuborilishini ta'minlaydi.
Permissions-Policy
Permissions-Policy: camera=(), microphone=(), geolocation=()
Sayt ishlatmaydigan brauzer imkoniyatlarini o'chiradi. Hatto sahifaga begona kod tushsa ham, u kamera yoki geolokatsiyaga murojaat qila olmaydi.
Server versiyasini yashirish
nginx standart holatda Server headerida va xato sahifalarida versiyasini ko'rsatadi. Bu ma'lumot oshkor bo'lishining kichik, lekin ekspertizada qayd etiladigan turi. server_tokens off; buni yopadi.
Eslatma:
X-XSS-Protectioneskirgan header. Zamonaviy brauzerlar uni qo'llamaydi; uni qo'shish shart emas, himoyani CSP beradi.
nginx konfiguratsiyasi
Quyidagi blokni server { ... } ichiga (HTTPS qismiga) qo'shing:
server_tokens off;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self'; connect-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
always parametri headerlar xato javoblarida (404, 500) ham yuborilishini ta'minlaydi.
Ko'p uchraydigan tuzoq: add_header merosi
nginx'da add_header direktivalari ichki blokka faqat o'sha blokda bitta ham add_header bo'lmasa meros qilib o'tadi. Agar location /assets/ { add_header Cache-Control ...; } yozsangiz, shu location dagi javoblarda barcha xavfsizlik headerlari yo'qoladi.
Yechim: headerlarni alohida faylga chiqarib, kerakli joylarda qayta ulash.
# /etc/nginx/snippets/security-headers.conf ichida yuqoridagi add_header qatorlari
server {
include snippets/security-headers.conf;
location /assets/ {
include snippets/security-headers.conf;
add_header Cache-Control "public, max-age=31536000, immutable";
}
}
CSP'ni xavfsiz joriy qilish
Mavjud saytga birdaniga qat'iy CSP qo'yish ba'zi funksiyalarni buzishi mumkin. Shuning uchun bosqichma-bosqich harakat qiling:
- Avval
Content-Security-Policy-Report-Onlyheaderi bilan siyosatni yoqing — brauzer hech narsani bloklamaydi, faqat buzilishlarni konsolga (yokireport-urimanziliga) yozadi. - Bir necha kun davomida buzilishlarni yig'ing va har birini tahlil qiling: bu haqiqiy kerakli manba yoki keraksiz/begona kodmi?
- Inline skript va stillarni alohida fayllarga chiqaring yoki
nonceqo'shing. - Siyosat toza bo'lgach, header nomini
Content-Security-Policyga almashtiring.
Natijani tekshirish
Brauzerda yoki terminalda headerlarni ko'ring:
curl -sI https://your-domain.uz | grep -iE "strict|content-security|x-content|x-frame|referrer|permissions|server"
So'ngra saytni securityheaders.com va Mozilla Observatory'da tekshiring. Skanerlar baholash mezonlarini o'zgartirib turadi, lekin odatda yuqori baho uchun HSTS va 'unsafe-inline' siz CSP hal qiluvchi ahamiyatga ega.
Bir narsani yodda tuting: skanerdagi A+ — bu headerlar to'g'ri sozlanganini bildiradi, xolos. U ilovada biznes mantiq yoki kirish nazorati xatolari yo'qligini ko'rsatmaydi. Headerlar himoyaning bitta qatlami.
Xulosa
Xavfsizlik headerlari — kam mehnat talab qiladigan, lekin aniq foyda beradigan sozlama. HSTS, CSP, nosniff, Referrer-Policy, Permissions-Policy va server_tokens off ni qo'shing, add_header merosini hisobga oling va CSP'ni avval report-only rejimida sinang.
Saytingiz headerlari va boshqa sozlamalarini tekshirtirmoqchimisiz? Skanerlash uchun so'rov qoldiring — Claude AI agenti va mutaxassisimiz konfiguratsiyani ko'rib chiqib, nimani tuzatish kerakligini ko'rsatamiz.


