Güvenlik başlıkları: CSP, HSTS ve diğerleri

Birkaç HTTP başlığı; XSS, tıklama hırsızlığı ve protokol düşürme saldırılarına karşı tarayıcıyı sizin tarafınıza geçirir. Hangi başlığın ne işe yaradığını, güvenli bir başlangıç ayarını ve siteyi bozmadan nasıl uygulanacağını anlatıyorum.

Uygulamanızı ne kadar dikkatli yazarsanız yazın, bir gün bir açık çıkabilir. Güvenlik başlıkları, tarayıcıya "bu sitede şunlara izin verme" demenin yoludur ve bir açığın etkisini ciddi ölçüde azaltır.

Strict-Transport-Security (HSTS)

Strict-Transport-Security: max-age=31536000; includeSubDomains

Tarayıcı, siteye bir yıl boyunca yalnızca HTTPS ile bağlanır. Dikkat: bütün alt alan adlarınız HTTPS'e hazır değilse includeSubDomains eklemeyin. İlk denemede kısa bir süre (örneğin bir gün) verin, emin olunca uzatın.

Content-Security-Policy (CSP)

Sayfanın hangi kaynaklardan betik, stil ve görsel yükleyebileceğini belirler. Bir XSS açığı olsa bile, saldırganın eklediği satır içi betik çalışmaz.

Content-Security-Policy: default-src 'self'; img-src 'self' data:;
  object-src 'none'; base-uri 'self'; frame-ancestors 'none'

CSP sitenizi bozabilir. Önce Content-Security-Policy-Report-Only başlığıyla yayımlayın, tarayıcı konsolundaki ihlalleri düzeltin, sonra asıl başlığa geçin.

Diğerleri

  • X-Content-Type-Options: nosniff: Tarayıcının dosya türünü tahmin etmesini engeller.
  • Referrer-Policy: strict-origin-when-cross-origin: Başka sitelere tam adres yerine yalnızca alan adınız gider.
  • Permissions-Policy: camera=(), microphone=(), geolocation=(): Kullanmadığınız tarayıcı özelliklerini kapatır.
  • frame-ancestors (CSP içinde): Sitenizin başka sitelerde çerçeve içinde açılmasını engeller; eski X-Frame-Options başlığının yerini alır.

X-XSS-Protection başlığını eklemeyin; modern tarayıcılar onu desteklemiyor.

Nginx'te bir tuzak

Bir location bloğunda tek bir add_header bile kullanırsanız, server düzeyindeki bütün başlıklar o blokta geçersiz olur. Başlıkları ortak bir dosyaya yazıp her yerde include etmek ve always parametresini eklemek bu sorunu çözer.

Kontrol

Tarayıcının geliştirici araçlarında Ağ sekmesinden yanıt başlıklarını görebilir, çevrimiçi başlık tarama araçlarıyla da hızlı bir not alabilirsiniz.

İlgili Yazılar