HTTP Güvenlik Başlıkları ve SEO
Hazırlayan Ersin DorlakYayın: Son güncelleme:
8 dk okuma
Kısa özetHTTP güvenlik başlıkları SEO'yu nasıl etkiler? Otopilot altı başlığı A-F notuyla değerlendirir, eksikler için nginx, Apache, Cloudflare ve Next.js kodu verir.
Bir web sayfası tarayıcıya yalnız HTML göndermez; yanıtın başında, ziyaretçinin hiç görmediği bir dizi başlık da gelir. Güvenlik başlıkları bu bilgilerin tarayıcıya "bu siteyi nasıl korumalısın" diyen kısmıdır. Siteyi her zaman HTTPS ile açmak, başka bir sitenin sizi gizlice çerçeve içine almasını engellemek ya da dosya türünü tahmin etmemek gibi kuralları sunucu bu başlıklarla bildirir.
Bu yazıda en yaygın altı güvenlik başlığının ne işe yaradığını, SEO ile gerçek ilişkisini ve Otopilot'un Site kodu görevleri → Güvenlik başlıkları sekmesinin bunları nasıl ölçüp eksikler için hazır kod verdiğini anlatıyoruz. Konuya dürüst bir cümleyle başlayalım: güvenlik başlıkları arama sıralamanızı doğrudan değiştirmez.
Güvenlik başlıkları SEO'yu etkiler mi?
Google'ın sıralama sistemlerinde "X-Frame-Options var mı" diye bakan bir sinyal yoktur. Bir sayfaya Content-Security-Policy eklemek, o sayfanın bir sonraki gün daha üstte görünmesini sağlamaz. Bunu söyleyen bir araç ya da ajans abartıyordur.
Yine de başlıklarla arama görünürlüğü arasında dolaylı bağlar vardır:
- HTTPS bir sinyaldir. Google 2014'te HTTPS'i hafif bir sıralama sinyali olarak duyurdu ve sayfa deneyimi belgesinde sayfanın güvenli bağlantıyla sunulmasını iyi deneyimin parçası sayar. HSTS, HTTPS'i her ziyarette zorunlu kılarak bu tarafı sağlamlaştırır.
- Ele geçirilmiş site görünürlük kaybeder. Kötü amaçlı kod eklenmiş ya da spam sayfalar barındıran siteler arama sonuçlarında uyarıyla gösterilebilir ve trafik kaybeder. CSP ve çerçeve koruması bazı saldırı türlerini zorlaştırır.
- Güven ve deneyim. Karışık içerik uyarısı veren ya da ziyaretçi bilgisini başka sitelere sızdıran bir site güven kaybeder. Bu kayıp tıklama ve dönüşüme yansır.
Kısacası güvenlik başlıkları bir SEO kısayolu değil, sitenin temel bakımının parçasıdır. Otopilot'taki sekmenin açıklaması da bunu söyler: başlıklar sıralamayı doğrudan değiştirmez, ama siteyi çerçeveleme, karışık içerik ve sızıntılara karşı korur, tarayıcı güven uyarılarını önler.
Altı temel güvenlik başlığı
Otopilot ana sayfanızın yanıtında şu altı başlığı değerlendirir. Her biri farklı bir riski kapatır.
Strict-Transport-Security (HSTS). Tarayıcıya bu siteyi bundan sonra yalnız HTTPS ile açmasını söyler. HSTS yoksa ilk ziyarette ya da elle yazılan http:// adreslerde bağlantı kısa bir an şifresiz kalabilir. max-age değeri tarayıcının bu kuralı ne kadar hatırlayacağını belirler.
Content-Security-Policy (CSP). Sayfanın hangi kaynaklardan betik, stil, görsel ve çerçeve yükleyebileceğini sınırlar. İyi kurulmuş bir CSP, sayfaya sızdırılmış bir betiğin çalışmasını engelleyebilir. En güçlü ama kurulumu en dikkat isteyen başlıktır.
X-Frame-Options ya da CSP frame-ancestors. Sitenizin başka bir sitede iframe içinde açılmasını sınırlar. Tıklama hırsızlığı denen, kullanıcıyı görünmez bir çerçevedeki düğmeye bastırma saldırısına karşı korur.
X-Content-Type-Options. nosniff değeriyle tarayıcının dosya türünü tahmin etmesini kapatır; bir metin dosyasının betik gibi çalıştırılmasının önüne geçer.
Referrer-Policy. Ziyaretçi sitenizden başka bir siteye geçtiğinde, karşı tarafa hangi adres bilgisinin gönderileceğini belirler.
Permissions-Policy. Kamera, mikrofon ve konum gibi tarayıcı özelliklerinin sayfada ve gömülü içeriklerde kullanılıp kullanılamayacağını belirler.
Hangisinden başlamalı sorusunun cevabı sitenin durumuna göre değişir, ama genel bir sıra önerilebilir. HTTPS zaten çalışıyorsa önce HSTS'i ekleyin; tek satırdır ve en yüksek ağırlığı taşır. Ardından X-Content-Type-Options, Referrer-Policy ve çerçeve korumasını ekleyin; bu üçü neredeyse hiçbir sitede görünür bir yan etki yaratmaz. CSP ve Permissions-Policy en sona kalabilir, çünkü sitenizin kullandığı özelliklere göre ayar ister.
Otopilot güvenlik başlıklarını nasıl okur?
Güvenlik başlıkları sekmesini ilk açtığınızda Otopilot projenizin başlangıç adresine tek bir GET isteği gönderir ve yanıt başlıklarını okur. İstek, panelin iç ağlara ya da özel adreslere yönlendirilmesini engelleyen güvenli getirme katmanından geçer; sayfa gövdesinin yalnız küçük bir kısmı alınır. Sonuç 24 saat saklanır ve bu süre içinde sekmeyi yeniden açtığınızda aynı sonuç gösterilir. Sunucunuzda değişiklik yaptıysanız Yeniden kontrol et düğmesiyle beklemeden yeni bir okuma isteyebilirsiniz.
Her başlık dört durumdan birini alır: Var, Zayıf, Yok ya da Gerekmez. Değerlendirme kuralları koddaki gibi şöyledir:
| Başlık | Var sayılır | Zayıf sayılır | Yok ya da kötü |
|---|---|---|---|
| HSTS | max-age en az 6 ay (15552000 sn) | max-age 6 aydan kısa | Başlık yok; site HTTPS değilse Gerekmez |
| CSP | Engelleme modunda politika var | Yalnız Report-Only ya da script-src içinde unsafe-inline | Politika yok |
| Çerçeve koruması | CSP frame-ancestors ya da DENY veya SAMEORIGIN | Eski ALLOW-FROM ya da geçersiz değer | Başlık yok |
| X-Content-Type-Options | nosniff değeri var | Bu başlık için ara durum yok | Başlık yok ya da değer farklı |
| Referrer-Policy | strict-origin-when-cross-origin gibi kısıtlı değer | Başlık yok ya da zayıf değer | unsafe-url |
| Permissions-Policy | Politika tanımlı | Politika yok | Bu başlık için kötü durum yok |
Birkaç ayrıntı önemlidir. Site HTTPS değilse HSTS anlamsızdır; bu yüzden "Gerekmez" sayılır ve ekran önce SSL sertifikası kurup HTTP'yi HTTPS'e yönlendirmenizi önerir. CSP yalnız raporlama modundaysa (Content-Security-Policy-Report-Only) hiçbir şeyi engellemediği için zayıf sayılır. Referrer-Policy hiç yoksa tarayıcının varsayılanı kullanılır; bu bir hata değil ama açıkça belirtmek daha iyidir.
En kötü Referrer-Policy değeri unsafe-url'dür: tam adresi, sorgu parametreleri dahil, her siteye gönderir.
Not ve puan nasıl hesaplanır?
Altı başlık eşit ağırlıkta değildir. HSTS en yüksek ağırlığı taşır, CSP ve çerçeve koruması onu izler, kalan üç başlık daha düşük ağırlıktadır. Var ya da Gerekmez durumu tam puan, Zayıf yarım puan, Yok sıfır puan alır. Sonuç 100 üzerinden bir puana ve A ile F arasında bir nota çevrilir:
- A: 90 ve üstü.
- B: 75 ile 89 arası.
- C: 55 ile 74 arası.
- D: 35 ile 54 arası.
- F: 35'in altı.
Bu not yalnız bu altı başlığın varlığını ve değerini ölçer. Sunucunuzdaki yazılım güncelliğini, eklenti açıklarını ya da parola güvenliğini değerlendirmez. A notu "site güvenli" demek değil, "tarayıcıya verilen temel güvenlik talimatları yerinde" demektir.
Ana sayfa okunamazsa not hesaplanmaz; ekran nedenini yazar ve sitenin erişilebilir olup olmadığını, güvenlik duvarının panel isteğini engelleyip engellemediğini kontrol etmenizi önerir.
Eksik güvenlik başlıkları için hazır kod
Not ekranının altında, yalnız Zayıf ya da Yok durumundaki başlıklar için hazırlanmış kod bulunur. Dört sunucu türü için ayrı sekme vardır:
- nginx: server bloğuna eklenecek add_header satırları, always bayrağıyla.
- Apache (.htaccess): mod_headers modülü içinde Header always set satırları.
- Cloudflare: Panelde Kurallar altındaki dönüşüm kuralıyla yanıt başlığı ekleme adımları ya da aynı işi yapan bir Worker kodu.
- Next.js: next.config.js dosyasında headers() işlevi ile tüm yollara başlık ekleyen tanım.
Önerilen değerler sitenizi bozmayacak biçimde seçilmiştir. HSTS için bir yıllık max-age ve includeSubDomains önerilir. CSP için tüm kaynakları kısıtlayan ağır bir politika yerine en az politika verilir: frame-ancestors 'self', object-src 'none', base-uri 'self' ve upgrade-insecure-requests. Bu politika betik kaynaklarını sınırlamaz; çerçeveleme ve eklenti saldırılarını keser, karışık içeriği HTTPS'e yükseltir. Permissions-Policy için kamera, mikrofon ve konum kapatılır; sitenizde mağaza konum bulucu gibi bu özellikleri kullanan bir bölüm varsa ilgili değeri önerilenden çıkarmanız gerekir.
WordPress kanalınız bağlıysa ekranda ek bir not görünür: Otopilot WordPress eklentisi bu başlıkları sizin yerinize yazabilir. Kanal & Kurulum → WordPress ekranındaki güvenlik başlıkları ayarını açmanız yeterlidir; sunucu dosyasına dokunmanız gerekmez. Pixel ise tarayıcıda çalıştığı için HTTP yanıtına başlık ekleyemez; bu sınırı SEO düzeltmesi uygulanmıyor yazımızda anlattık. Siteniz Cloudflare arkasındaysa Worker seçeneğinin genel işleyişi Cloudflare Worker ile sunucu tarafı SEO yazımızda yer alıyor.
Eksik başlıklar ayrıca Geliştirici kartları sekmesinde tek bir kart olarak da listelenir; kartta notunuz, eksik başlıkların adları ve altyapınıza göre adımlar yazar.
Değişiklikten sonra ne yapmalı?
Başlıkları ekledikten sonra sunucuyu yeniden yükleyin ya da önbelleği temizleyin, ardından sekmede Yeniden kontrol et düğmesine basın. Not yükseldiyse değişiklik yerindedir.
Sonucu kendi tarayıcınızda da görebilirsiniz. Sayfayı açıp geliştirici araçlarında Ağ sekmesine geçin, listedeki ilk belge isteğini seçin ve Yanıt başlıkları bölümüne bakın. Eklediğiniz başlıklar burada görünmüyorsa değişiklik ya yanlış dosyaya yazılmıştır ya da araya giren bir önbellek ya da CDN eski yanıtı sunuyordur. Apache'de .htaccess dosyasının okunması için mod_headers modülünün açık olması gerekir; nginx'te ise add_header satırları bir alt location bloğunda tekrar tanımlanırsa üst bloktakiler o yolda geçersiz kalır. Bu iki durum, başlığın "eklendiği hâlde görünmemesinin" en sık nedenleridir.
Paylaşımlı barındırmada sunucu yapılandırmasına erişiminiz yoksa .htaccess genellikle tek yoldur. O da kapalıysa ve siteniz Cloudflare arkasındaysa dönüşüm kuralı sunucuya dokunmadan aynı sonucu verir.
Dikkat edilmesi gereken birkaç tuzak vardır. HSTS bir kez yayınlandığında tarayıcılar max-age süresince siteyi yalnız HTTPS ile açar; alt alan adlarınızdan biri HTTPS desteklemiyorsa includeSubDomains onu erişilemez kılabilir. CSP'yi sıkılaştırmaya karar verirseniz önce Report-Only modunda deneyin; ama bu modda bırakırsanız ekran onu zayıf saymaya devam eder. Aynı başlığı hem sunucuda hem eklentide eklemek de çift başlığa yol açabilir; tek bir yerden yönetmek daha temizdir.
Geliştiriciniz yoksa ekranın altındaki Bizim yapmamızı ister misiniz? düğmesiyle eksik başlıkların eklenmesi için hizmet talebi açabilirsiniz. Hız işleri de çoğu zaman aynı sunucu yapılandırmasına dokunur; LCP nasıl düşürülür yazımız bu tarafı anlatıyor. SSL sertifikasının süresini takip etmek için uptime izleme, kanalların neyi uygulayabildiğini görmek için SEO onarım sayfalarına bakabilirsiniz.
Sık sorulan sorular
Güvenlik başlıkları eklersem sıralamam yükselir mi?
Doğrudan hayır. Google bu başlıkları sıralama sinyali olarak kullanmaz. HTTPS ise hafif bir sinyaldir ve HSTS onu sağlamlaştırır. Asıl kazanç sitenin korunması ve ziyaretçi güvenidir.
CSP sitemi bozar mı?
Kısıtlayıcı bir CSP, izin verilmeyen betik ve stilleri engellediği için siteyi bozabilir. Otopilot'un önerdiği en az politika betik kaynaklarını sınırlamaz; bu yüzden çoğu sitede görünür bir değişikliğe yol açmaz. Daha sıkı bir politikaya geçecekseniz önce Report-Only ile deneyin.
Sitem HTTPS değil, HSTS neden "Gerekmez" görünüyor?
HSTS yalnız HTTPS ile sunulan sitelerde anlamlıdır. Önce SSL sertifikası kurup tüm HTTP isteklerini HTTPS'e yönlendirin; sonra HSTS ekleyin.
Neden yalnız ana sayfa kontrol ediliyor?
Güvenlik başlıkları genellikle sunucu ya da CDN düzeyinde, tüm site için birlikte tanımlanır. Ana sayfadaki yanıt sitenin genel yapılandırmasını gösterir. Farklı yollar için ayrı kural tanımladıysanız onları ayrıca kontrol etmeniz gerekir.
Sonuç ne kadar süre geçerli?
Okunan başlıklar 24 saat saklanır. Bu süreden eski bir sonuç varsa sekmeyi açtığınızda yeniden okunur; dilerseniz Yeniden kontrol et düğmesiyle hemen yenileyebilirsiniz.
Kaynaklar
Bu sayfayı kim hazırladı?
Bu içeriği Otopilot kurucusu Ersin Dorlak, ürünü geliştiren ekiple birlikte hazırladı. Deneyimimizi kendi sitemizde ediniyoruz: otopilot.net'i de aynı panelden, 95 kurallı denetimle tarıyor ve çıkan bulguları düzeltiyoruz. Ölçmediğimiz bir rakamı ölçülmüş gibi yazmıyoruz.
Ekibimiz ve ilkelerimizSitenizde aynı kontrolleri yapın
Ücretsiz site analiziyle sayfalarınızdaki teknik ve içerik sorunlarını görün. Düzeltmeleri panelde hazırlamak ve sitenize uygulamak için planları inceleyin.