Güvenlik başlıkları, sunucunun her yanıtla birlikte tarayıcıya gönderdiği kısa talimatlardır. Kod değiştirmeden, yalnızca web sunucusu yapılandırmasıyla clickjacking, MIME sniffing ve HTTPS'e düşürme saldırılarına karşı koruma eklenebilir.
En sık kullanılan başlıklar
- Strict-Transport-Security (HSTS): Tarayıcıyı belirli süre boyunca siteye yalnızca HTTPS ile bağlanmaya zorlar.
- X-Content-Type-Options: nosniff: Tarayıcının dosya türünü tahmin etmesini engeller.
- X-Frame-Options (veya CSP
frame-ancestors): Sayfanın başka sitelerde iframe içine alınmasını sınırlar. - Referrer-Policy: Başka sitelere giderken hangi referrer bilgisinin gönderileceğini belirler.
- Permissions-Policy: Kamera, konum gibi tarayıcı özelliklerini kapatır.
- Content-Security-Policy: Script ve kaynak yüklemesini kısıtlar.
Nginx örneği
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" 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;
Apache örneği
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Apache için mod_headers modülünün etkin olması gerekir.
Doğrulama ve dikkat edilecekler
- Başlıkların geldiğini
curl -sI https://alanadi.comkomutuyla kontrol edin. - HSTS'i önce kısa bir
max-ageile deneyin; yanlış yapılandırılmış HTTPS'te siteye erişim kilitlenebilir. includeSubDomainseklemeden önce tüm alt alan adlarının HTTPS sunduğundan emin olun.- Yanıt başlıklarının yönlendirme yanıtlarında da gönderildiğini kontrol edin (
alwaysbayrağı).
Başlıkları test etme ve sürdürme
Başlıkların yalnızca ana sayfada değil, hata sayfalarında, statik dosyalarda ve API yanıtlarında da bulunduğunu doğrulayın. Uygulama çerçeveleri kendi başlıklarını ekliyorsa çift başlık oluşmasını engelleyin. Yapılandırmayı sürüm kontrolünde tutup her dağıtımdan sonra otomatik bir curl -sI kontrolü çalıştırmak, sessizce kaybolan başlıkları yakalar. Sunucu sürümünü gösteren başlıkları da gizlemek (ör. Nginx'te server_tokens off;) bilgi sızdırmayı azaltır.
Başlıklar yalnızca geçerli bir HTTPS kurulumuyla anlamlıdır; SSL sertifikası seçenekleri için ilgili sayfaya, kurulum sonrası kontrol için SSL denetleyici aracına bakabilirsiniz. Başlık setini bir kez kurup düzenli aralıklarla yeniden test etmek yeterlidir.