Güvenlik Başlıkları Denetimi

Bir sayfanın yanıt başlıklarını yapıştırın —curl -sI https://your-site.example/bir terminalde ya da tarayıcının Ağ panelinden alınan blokta — ve şunu alın:A+ ile F arası notOWASP Güvenli Başlıklar kontrol listesinde:Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, çerçeve koruması,Referrer-Policy, Permissions-Policy, çapraz kaynak izolasyon üçlüsü, sürüm sızıntıları, kullanımdan kaldırılmış başlıklar ve çerez bayrakları — her bulgu tam olarak şununla eşleştirilmiş:nginx, Apache ve Expressbunu düzelten satırlar. Her şey tarayıcınızda çalışır; sayfa sitenize hiçbir zaman bağlanmaz.
Durum satırı isteğe bağlıdır. Birden fazla Set-Cookie satırı hepsi denetlenir. Notlandırılacak bir politikanın olması için bunu CSP üretici ile oluşturun; bir başlık bloğunu satır satır ayrıştırmak için HTTP başlık ayrıştırıcıyı kullanın.
Henüz not yok. Yanıt başlıklarını yapıştırın ve Başlıkları denetle'ye basın ya da bir örnek yükleyin.
Denetimden sonra her bulgu için düzeltme satırları burada görünür.
Bu denetleyicinin kapsamı ile SSL Güvenlik Denetimi arasındaki fark. Bu sayfa güvenlik yanıt başlıklarını (yukarıdaki OWASP listesi) notlandırır. SSL Güvenlik Denetimi ise HTTPS kurulumunuzu notlandırır: sertifika zinciri, protokol sürümleri, şifre gücü ve karışık içerik. HSTS ve çerez bayrakları iki sayfada da görünür, çünkü iki liste de bunları içerir, ancak farklı açılardan — tam tablo için ikisini de çalıştırın.
Öz test
Notlandırıcıyı sabit başlık bloklarına karşı yeniden çalıştırır: iyi örnek A+ notunda, tüm kesintileri uygulanmış kötü örnek F notunda, her kural ayrı ayrı (puanın aritmetiği), sürüm sızıntısı sınırı, çerez tavsiyeleri, CSP kalite notları, frame-ancestors'ın çerçeve koruması sayılması, her sınırın iki yanında not eşikleri, düzeltme parçacıkları ve olumsuz yollar. Hiçbir şey hiçbir yere gönderilmez.
Güvenlik başlıkları nedir?
Tek cümleyle: güvenlik başlıkları, tarayıcıya kendi başına çözemediği bir korumayı uygulamasını söyleyen yanıt başlıklarıdır — bilinmeyen kaynaklardan asla betik yüklemeyin, bu ana makineyle bir daha asla düz HTTP konuşmayın, bu sayfayı asla çerçevelemeyin — ve her biri bir yapılandırma satırına mal olur.
Bu sayfanın notlandırdığı başlıklar
ÜstbilgiKorunduğu tehditOWASP önerilen değeri
Strict-Transport-Securityprotokol düşürme ve düz HTTP'deki ilk istekte çerez çalınmasımax-age=63072000; includeSubDomains
Content-Security-Policysiteler arası betik çalıştırma, kötü niyetli gömmeler, karışık içerikdefault-src 'self'; form-action 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; upgrade-insecure-requests
X-Content-Type-OptionsMIME karışıklığı (bir betiğin görsel olarak sunulması)nosniff
X-Frame-Options / CSP frame-ancestorstıklama kaçırma (sayfanızın bir saldırgan tarafından çerçevelenmesi)deny / 'none'
Referrer-PolicyURL'lerin (belirteçlerle birlikte) üçüncü taraf sitelere sızdırılmasıno-referrer
Permissions-Policysayfaların ve gömmelerin kamerayı, mikrofonu, konumu sessizce kullanmasıtüm özellikler kapalı
Cross-Origin-Opener-Policydiğer pencerelerin tarayıcı bağlamınıza erişmesisame-origin
Cross-Origin-Embedder-Policykatılmamış kaynakları yüklemek (süreç izolasyonunu etkinleştirir)require-corp
Cross-Origin-Resource-Policydiğer siteler tarafından gömülen kaynaklarınızsame-origin
Not nasıl hesaplanır

100'den başlayın ve çıkarın: eksik CSP için −25, eksik HSTS için −20, eksik X-Content-Type-Options, Referrer-Policy ya da herhangi bir çerçeve koruması için her biri −10, çapraz kaynak üçlüsü ve Permissions-Policy için her biri −5, Server/X-Powered-By içindeki sürüm sızıntıları için −5 (sınırlı) ve sıfır olmayan bir X-XSS-Protection için −5. Harf notları: 100 = A+, 90+ = A, 80+ = B, 70+ = C, 60+ = D, altı = F. Tavsiye notları (çerez bayrakları, önbellek denetimi, CSP kalitesi) puan düşürmez.

Yaygın hatalar
  • Başlıkları yanlış yanıtlara koymak. Hata sayfaları ve yönlendirmeler dahil her yanıta ekleyin - add_header ... always; (nginx) ve Header always set (Apache) içindeki always'in amacı budur.
  • Yalnızca ana sayfayı test etmek. Proxy'ler, önbellekler ve eski uygulamalar başlıkları çoğu zaman yalnızca bazı yollarda siler ya da geçersiz kılar. Önemli sayfaları denetleyin: giriş, ödeme, API uç noktaları.
  • X-XSS-Protection'ı tutmak. Yönlendirdiği denetleyici kendi güvenlik açıklarına yol açtı; tarayıcılar bunu kaldırdı. Sıfır olmayan bir değer artık bilerek puan kaybettirir - kaldırın ve işi CSP'ye bırakın.
  • X-Frame-Options'ın güncel olduğuna inanmak. Belirli kaynaklara izin veremez ve CSP standardında değildir; modern yerine geçen frame-ancestors'tır. Geçiş sırasında ikisini birlikte tutmak sorun değildir - bu sayfa ikisinden birini kabul eder.
  • Sürüm bannerları göndermek. Server: Apache/2.4.58 (Unix), bir saldırganın bilinen hatalar için aramasını hiçbir fayda sağlamadan daraltır. Sürümü çıkarın; satır sayısını azaltın.
SSS

COOP/COEP/CORP neden her biri yalnızca 5 puan? Üçlü en yeni katmandır; esas olarak süreç izolasyonu istediğiniz yerlerde gerekir (SharedArrayBuffer, Spectre sertleştirmesi). Bunlar olmayan bir site yine de temel korumalarına sahiptir; bunlarla birlikte bazı çapraz kaynak gömmelerin ayarlanması gerekir - bu yüzden CSP ya da HSTS'den daha az ağırlık taşırlar.

Yüksek not sitenin güvenli olduğu anlamına mı geliyor? Hayır - yanıt başlıklarının ayarlandığı anlamına gelir. Güvenlik başlıkları bir katmandır: TLS yapılandırması, oturum yönetimi, girdi doğrulama ve yama yapma, sitenin gerçekten güvenli olup olmadığını hâlâ belirler. TLS katmanı için SSL Güvenlik Denetimi'ni çalıştırın.

Permissions-Policy değerim neden bu kadar uzun? OWASP temel çizgisi her özelliği açıkça kapatır, böylece tarayıcının yeni özellik eklemesi onları sessizce yeniden etkinleştirmez. camera=(), microphone=(), geolocation=() gibi daha kısa bir değer bir başlangıçtır - yalnızca neyi açık bıraktığını bilin.

Buradan herhangi bir sitenin başlıklarını denetleyebilir miyim? Bu sayfa hiçbir ağ isteği yapmaz - yalnızca yapıştırdığınız metni notlandırır; bu yüzden güvenlik duvarlarının arkasında ve dahili ana makinelerde çalışır ve denetlediğiniz hiçbir şey makinenizden ayrılmaz. Başlıkları getirmek terminalinizde tek bir curl -sI komutudur.

Clear-Site-Data ve X-Permitted-Cross-Domain-Policies ne olacak? Dar senaryolarda faydalıdırlar (çıkış yanıtları; eski PDF/Flash görüntüleyiciler). Burada tavsiye niteliğindedirler, puanlanmazlar - Clear-Site-Data'yı her yanıtta göndermek, kullanıcılarınızın depolamasını her sayfa yüklemesinde silerdi.