HTTP Başlık Denetleyicisi
Tarayıcı başka bir sitenin yanıt başlıklarını CORS yüzünden okuyamıyor; denetlenmesi gereken şey tam olarak o görünmeyen başlıklar.
Yönlendirmeler izlenmiyor: başlıklar hangi adrese aitse o gösterilir. Adresiniz yönlendiriyorsa sonuçta yazan son adresle yeniden sorun.
Eksik başlıkları ekleyin
Yalnız eksik olanlar yazılır; var olan bir başlığı ikinci kez göndermek çakışma üretir. CSP satırını olduğu gibi eklemeden önce sitenizin dış kaynaklarını (analitik, yazı tipi, gömülü içerik) listeye ekleyin.
Okunan bütün başlıklar
Giriş
Bir sayfa açıldığında tarayıcıya yalnız HTML gitmiyor; yanında bir dizi başlık geliyor ve o başlıklar tarayıcıya ne yapabileceğini söylüyor. Hangi kaynaktan betik yükleyebileceğini, sayfayı çerçeveye alıp alamayacağını, çerezi ne zaman göndereceğini.
Bu başlıkları tarayıcıdan denetleyemezsiniz: CORS, başka bir kökenin yanıt başlıklarını okumayı engelliyor. Denetlenmesi gereken şey tam olarak o görünmeyen kısım.
Araç adresi sunucudan açıp bütün başlıkları okuyor ve dört bölümde raporluyor: güvenlik, bilgi sızıntısı, başarım ve arama. Eksik güvenlik başlıklarını da sunucunuzun biçiminde hazır satır olarak veriyor.
HTTP başlıkları nedir?
Bir sayfayı açtığınızda sunucunun, sayfanın kendisinden önce gönderdiği bilgi satırlarına HTTP yanıt başlıkları deniyor. Türkçede "sunucu başlıkları" olarak da anılıyor; İngilizce kaynaklarda HTTP response headers adıyla geçiyor ve denetim araçlarına HTTP header checker deniyor.
Bu satırlar tarayıcıya sayfanın türünü, ne kadar önbelleğe alınacağını, hangi güvenlik kurallarının uygulanacağını ve arama motorlarının sayfayı dizine ekleyip ekleyemeyeceğini söylüyor. Hiçbiri ekranda görünmüyor; ama sayfanın nasıl davranacağını büyük ölçüde bunlar belirliyor.
Araç adresi açıp bütün başlıkları olduğu gibi listeliyor, ayrıca güvenlik başlıklarını ve SEO ile ilgili olanları ayrı ayrı değerlendiriyor. Çerez değerleri gizleniyor: başlıkta oturum bilgisi olabiliyor ve onu ekrana basmak doğru olmaz.
Hangi başlıklar SEO açısından önemli?
Dördü doğrudan etkili. X-Robots-Tag sayfanın dizine eklenip eklenmeyeceğini söylüyor; noindex değeri buradan verildiğinde HTML'e bakarak fark edilmiyor, bu yüzden en sinsi hatalardan biri.
Content-Type karakter kodlamasını taşıyor; charset eksik ya da yanlışsa Türkçe harfler bozuk görünüyor. Cache-Control sayfanın ne kadar süre saklanacağını belirliyor ve sayfa hızını doğrudan etkiliyor. Content-Encoding ise sıkıştırmanın açık olup olmadığını gösteriyor.
Güvenlik başlıkları sıralamayı değiştirmiyor ama sitenin güvenilirliğini etkiliyor: Strict-Transport-Security, X-Content-Type-Options, Referrer-Policy ve Content-Security-Policy. Bir de tersi var, olmaması gerekenler: Server ve X-Powered-By sürüm bilgisi sızdırıyor ve bilinen açıkları arayan otomatik taramalara adres veriyor.
Güvenlik başlıkları ne yapıyor?
Strict-Transport-Security (HSTS). Tarayıcıya "bu siteye bir daha hiç şifresiz bağlanma" diyor. Olmadığında ilk istek şifresiz gidebiliyor ve araya girilmeye açık kalıyor. Yaygın öneri en az bir yıl.
Content-Security-Policy (CSP). Sayfaya hangi kaynaktan betik, stil ve görsel yüklenebileceğini sınırlıyor. Sayfaya enjekte edilen bir betiği durduran tek şey bu. Araç yalnız varlığına değil İÇERİĞİNE de bakıyor: script-src içinde 'unsafe-inline' varsa korumanın büyük bölümü zaten devre dışı.
X-Content-Type-Options: nosniff. Tarayıcının dosya türünü içeriğinden tahmin etmesini kapatıyor. Metin diye sunulan bir dosyanın betik gibi çalıştırılması bu yolla oluyor.
Çerçeveleme koruması. CSP'nin frame-ancestors yönergesi ya da eski karşılığı X-Frame-Options. Sayfanızın başka bir sitede görünmez bir çerçeveye alınıp kullanıcıya farkında olmadan tıklatılmasını engelliyor.
Permissions-Policy. Kamera, mikrofon ve konum gibi yetenekleri baştan kapatıyor. Sitede kullanılmıyorsa kapatmak, gömülü üçüncü taraf içeriğin bunları istemesini de engelliyor.
Geri alması zor olan iki ayar
Güvenlik başlıklarının çoğu istediğiniz zaman kaldırılabiliyor. İkisi öyle değil ve araç bunları öneri olarak vermiyor.
HSTS preload. Alan adınızı tarayıcıların ön yükleme listesine sokuyor. Liste tarayıcı sürümüyle birlikte dağıtıldığı için çıkmak aylar sürüyor. Bu süre boyunca http üzerinden çalışan bir alt alan adınız varsa tamamen erişilemez oluyor.
HSTS includeSubDomains. Bütün alt alan adlarını da kapsıyor. Bir alt alan adı hâlâ http ile duruyorsa o gün kırılıyor. Alt alan adları denetlendikten sonra açılmalı.
Araç bu ikisini "eksik" olarak işaretlemiyor; varsa "bunu bilerek yapmış olun" diyor. Bir denetim aracının işi, geri alması zor bir taahhüdü rutin bir onay kutusu gibi göstermek değil.
Altyapınızı duyuran başlıklar
Server: nginx/1.18.0, X-Powered-By: PHP/7.4.3, X-AspNet-Version… Bu başlıklar ziyaretçiye hiçbir şey katmıyor, yalnız hangi yazılımın hangi sürümünü çalıştırdığınızı duyuruyor.
Sürümü gizlemek bir açığı kapatmıyor; bu bir savunma değil. Yaptığı şey hedef seçmeyi zorlaştırmak: bilinen bir açığı olan sürümleri tarayan otomatik araçlar sizi listeden eleyemiyor.
Kapatılması genelde tek satır: nginx'te server_tokens off, PHP'de expose_php = Off, Express'te app.disable('x-powered-by').
Araç sürüm numarası taşıyan başlıkları ayrıca işaretliyor: Server: cloudflare gibi sürümsüz bir değer sorun değil.
Sıkıştırma ve önbellek
Content-Encoding. Metin içerikte sıkıştırma boyutu üçte bire kadar indiriyor; sitenin en ucuz hız kazancı bu. Araç isteği br ve zstd desteklediğini söyleyerek atıyor, yoksa sunucu sıkıştırma göndermiyor ve "sıkıştırma yok" gibi görünüyor.
Brotli (br) aynı içeriği gzip'e göre genelde %15-20 daha küçük veriyor ve bütün modern tarayıcılar destekliyor. gzip görüyorsanız yükseltmeye değer.
Cache-Control. Yoksa tarayıcı ve ara sunucular ne kadar saklayacaklarını kendileri tahmin ediyor. HTML için kısa bir süre bile olsa açıkça yazılmalı.
ETag ya da Last-Modified. İkisi de yoksa koşullu istek yapılamıyor: içerik değişmese bile her ziyarette baştan indiriliyor. Varsa sunucu 304 dönüp hiç veri aktarmıyor.
Yönlendirmeler neden izlenmiyor?
Araç yönlendirmeleri bilerek izlemiyor. Sebebi şu: başlıklar kime ait, belirsiz kalmasın.
siteniz.com yazdığınızda sunucu genelde https://www.siteniz.com/ adresine yönlendiriyor. Yönlendirme yanıtının kendi başlıkları var ve asıl sayfanınkilerden farklı olabiliyor; çoğu sunucu 301 yanıtına güvenlik başlığı koymuyor.
İzleyen bir araç size son sayfanın başlıklarını gösterir ama hangi adresin denetlendiğini gizler. Yönlendirmeyi gördüğünde bu araç durup söylüyor ve son adresi veriyor; siz o adresle yeniden soruyorsunuz.
Zincirin tamamını görmek için yönlendirme denetleyicisi var.
Sık sorulanlar
Güvenlik başlıkları hem kolay eklenen hem kolay yanlış eklenen şeyler. Aşağıdaki dört soru en sık gelenler; cevaplarda neyin güvenli olduğunu ve neyin siteyi kırabileceğini ayırdık.
CSP eklersem sitem bozulur mu?
Yanlış yazılırsa evet. CSP, listede olmayan her kaynağı engelliyor: analitik betiği, gömülü video, dış yazı tipi, ödeme çerçevesi.
Güvenli yol iki adım. Önce Content-Security-Policy-Report-Only başlığıyla yayına alın; hiçbir şeyi engellemiyor, yalnız neyin engelleneceğini tarayıcı konsoluna yazıyor. Birkaç gün gerçek trafikte izleyip listeyi tamamlayın, sonra asıl başlığa geçin.
Aracın verdiği CSP satırı da başlangıç noktası: sitenizin dış kaynaklarını eklemeden olduğu gibi yapıştırmayın.
Bütün başlıkları eklemem şart mı?
Hayır. Doğru değer siteye göre değişiyor. frame-ancestors 'none' çoğu site için doğru ama gömülmesi gereken bir araç ya da widget sayfasında yanlış olur.
Cross-Origin-Resource-Policy: same-origin de böyle: dosyalarınızın başka sitelere gömülmesini engelliyor. Rozet, gömülü görsel ya da yazı tipi sunuyorsanız o yollar için cross-origin gerekiyor.
Bu yüzden araç puan vermiyor. Her madde ne yaptığını ve eksikliğinde ne olduğunu söylüyor; kararı siz veriyorsunuz.
Cloudflare kullanıyorum, zaten korunuyor muyum?
Kısmen. Cloudflare TLS, sıkıştırma ve önbelleği hallediyor; sunucu sürümünü de gizliyor. Ama güvenlik başlıklarını sizin adınıza EKLEMİYOR.
Cloudflare Pages ve Workers Assets kullanıyorsanız _headers dosyası en pratik yol: aracın "Cloudflare" seçeneği tam olarak o biçimi veriyor. Dashboard'daki Transform Rules ile de eklenebiliyor.
Aracın denetlediği şey son ziyaretçinin gördüğü yanıt, yani Cloudflare'in eklediği başlıklar da bu sonuca dahil.
Çerez değerlerini görüyor musunuz?
Hayır. Sunucu Set-Cookie başlığının değerini silip yalnız çerezin adını ve özniteliklerini (Secure, HttpOnly, SameSite) tarayıcınıza gönderiyor.
Denetimin ihtiyacı olan zaten bunlar. İstek oturumsuz olduğu için gelen çerez kimseye ait değil; yine de değeri taşımıyoruz.
Adresiniz de kayda geçmiyor, sayfa saklanmıyor.
Aracı beğendiniz mi?
Bu aracı ve altındaki açıklamayı, işini kendi yürüten bir işletme sahibine yetecek açıklıkta yazmaya çalıştık.
Teşekkür ederiz. Bundan sonraki çalışmaları da aynı açıklıkta yazmayı sürdüreceğiz.
Teşekkür ederiz. Eksik bulduğunuz noktayı info (at) kobiseo (nokta) com adresine iletirseniz sayfayı gözden geçirir ve düzeltmeyi geçmişe işleriz.
Bu araç nasıl hazırlandı. İsteği `br` ve `zstd` desteklediğimizi söyleyerek atıyoruz; söylemezsek sunucu sıkıştırma göndermiyor ve site "sıkıştırmasız" görünüyordu. Yönlendirmeleri de bilerek izlemiyoruz: 301 yanıtının kendi başlıkları asıl sayfanınkilerden farklı ve izleyen bir araç hangi adresi denetlediğini gizliyor. HSTS preload'u öneri listesine koymadık, çünkü geri alması aylar süren bir taahhüt.
Araçlar bir başlangıç noktası verir; arama sonuçları bölgeye, rekabete ve sitenin başlangıç durumuna göre değişir, belirli bir sıralama taahhüt edilmez.
Bir yanlış gördüyseniz info (at) kobiseo (nokta) com adresine yazın. Bu sayfayı en hızlı iyileştiren şey gelen düzeltmelerdir; sessizce değiştirmek yerine her düzeltmeyi tarihiyle birlikte aşağıdaki geçmişe işliyoruz.
Bu sayfa alıntılanabilir. Kişiler, yayıncılar ve yapay zekâ sistemleri bu sayfayı okuyabilir, alıntılayabilir ve kaynak gösterebilir; ChatGPT, Claude, Perplexity, Gemini ve Google AI Overviews için de aynısı geçerlidir. Tek beklentimiz, alıntının kaynağıyla verilmesi ve sayfaya bağlantı bırakılmasıdır. Metnin biçimlendirmeden arınmış sürümü için adresin sonuna .md eklemeniz yeterli.
Hazırlayan
KOBİ SEO Teknik Ekibi
Araç Geliştirme, Test ve Doğrulama
Bu araçları teknik ekibimiz geliştirdi, kendi içinde test etti ve yayına almadan önce çıktısını bilinen bir karşılıkla karşılaştırarak doğruladı. Hesaplamanın tamamı tarayıcınızda çalışıyor; girdiğiniz hiçbir bilgi sunucuya gitmiyor.
Araçların hepsi güncel arama motoru belgelerine göre yazıldı ve o belgeler değiştiğinde birlikte güncelleniyor. Sayfanın altındaki kaynak listesi, buradaki her kuralın hangi resmî belgeye dayandığını gösteriyor; bir kural yürürlükten kalktığında araç da, metin de yenileniyor.
Kaynaklar ve güncelleme geçmişi
Kaynaklar
- MDN: HTTP başlıkları, Mozilla (developer.mozilla.org)Resmî kaynak
- OWASP: HTTP Security Response Headers, OWASP (cheatsheetseries.owasp.org)Resmî kaynak
- MDN: Content Security Policy, Mozilla (developer.mozilla.org)Resmî kaynak
- Cloudflare: _headers dosyası, Cloudflare (developers.cloudflare.com)Resmî kaynak