Güvenlik
Bağlantı, içerik ve ikisini koruyan başlıklar — artı tarayıcıların kullanıcılara gösterdiği güven sinyalleri.
toplam puanın 0,13’üSıralamalar, trafik ve güven için neden önemli?
HTTPS 2014’ten beri bir sıralama sinyalidir ve 2018’den beri Chrome her HTTP sayfasını "Güvenli değil" olarak etiketler — markanızın yanında adres çubuğunda görmek isteyeceğiniz son kelime. Modern TLS (en az 1.2, tercihen 1.3) temel bir gerekliliktir; A’yı C’den ayıran şeyler protokoller, anahtar değişimi ve sertifika hijyenidir.
Güvenlik başlıkları web’deki en ucuz marka sigortasıdır. HSTS protokol düşürme saldırılarını durdurur, CSP XSS’i önler, X-Frame-Options ve frame-ancestors tıklama-kapma (sitenizin bir dolandırıcılık sayfasının içinde gösterilmesi) saldırısını engeller, Referrer-Policy kullanıcı URL’lerinin çapraz siteye sızmasını önler. Hiçbiri performansa mal olmaz; hepsi her ciddi denetimde görünür.
Sürüm bilgisi veren başlıklar (Server: nginx/1.24.0, X-Powered-By: Express) saldırganlara yığınınızın ücretsiz parmak izini verir ve Secure/HttpOnly/SameSite olmadan çerezler basit saldırılarla çalınabilir ya da taklit edilebilir. Bir pazarlama sitesi için bunlar, bir akşamlık uğraşla kalıcı yarar sağlayan düzeltmelerdir.
Bu bölümdeki her sinyal — motorun tam olarak neyi kontrol ettiği
Nasıl düzeltilir?
Sık görülen nedenler
- “Eski istemciler için” hâlâ açık TLS 1.0/1.1 — ya da süresi dolmak üzere bir sertifika.
- Framework-varsayılan yanıt başlıkları: HSTS yok, CSP yok, X-Frame-Options yok.
- Sunucu ve X-Powered-By’nin internete tam sürüm haykırması.
- Secure / HttpOnly / SameSite olmadan oturum çerezleri.
- MTA-STS ve TLS-Rpt eksikliği — posta taşıma şifrelemesi zorlanmamış ve izlenmemiş.
Önerilen kurulum
Tek bir nginx server bloğu TLS tarafını ve başlık tarafını birlikte kapsar. Başlıkları önce güvenli değerlerle yayınlayın; CSP’yi kendi konsolunuzdaki ihlalleri izleyerek kademeli sıkılaştırın.
server {
listen 443 ssl http2;
server_name example.com;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
# başlık seti (HPTS en son — test için kısa max-age ile başlayın)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Content-Security-Policy "default-src 'self'; img-src 'self' data:; object-src 'none'; base-uri 'self'; frame-ancestors 'self'" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# sürüm açıklamayı durdur
server_tokens off;
}Set-Cookie: session=abc123; Secure; HttpOnly; SameSite=Lax; Path=/
# Secure → asla http:// üzerinden gönderilmez
# HttpOnly → JavaScript’e görünmez (XSS çalamaz)
# SameSite → çapraz site isteklerine eklenmez (CSRF savunması)# Express
app.disable('x-powered-by');
# nginx (uygulama yine de ayarlarsa)
proxy_hide_header X-Powered-By;; gelen posta için TLS’i zorla
mta-sts.example.com. 3600 IN TXT "v=STSv1; id=20261001"
; https://mta-sts.example.com/.well-known/mta-sts.txt şunu sunar:
; version: STSv1
; mode: enforce
; mx: mail.example.com
; max_age: 31536000
; hata raporlarını al
_smtp._tls.example.com. 3600 IN TXT "v=TLSRPT1; rua=mailto:[email protected]"