Çağatay Gül
  , Teknik SEO

01 Şub 2023


Günümüzde artık standart SEO çalışmalarının aksine çok daha detaylı ve kapsamlı çalışmalar izlenmektedir. Bugün ele alacağımız konu da bu kapsama girmektedir.

Sitemiz için HTTP Headers tarafında uygulamamız gereken adımları ve bunları nasıl uygulayabileceğinizi sizlere aktaracağım.

Aslında HTTP Headers konusu özelinde güvenlik başlıkları olarak adlandırdığımız alanlar web sitesi denetimlerinde çoğu SEO uzmanının gözünden kaçabilmektedir.

Zaman zaman kimi uzmannlar web sitesi güvenliğinin SEO ile alakalı çok fazla endişe etmememiz gereken bir konu olduğunu savunsa dahi siteniz saldıraya uğradığında organik trafiğinizde gerçekleşecek ciddi bir düşüş en önemli sorununuz haline gelecektir.

HTTP Headers Nedir?

HTTP Header, bir web sunucusunun bir web sayfasına ulaşmaya çalışan tarayıcıya verdiği yanıttır.

Genellikle bu başlıklar bir tarayıcının içeriği önbelleğe alırken nasıl davranması gerektiği, içeriğin türü, sunucu üzerinde çalışan yazılımları, sayfanın ulaşılabilirliği ve buna benzer çok daha fazla teknik bilgiyi aktarırken kullanılır.

Bu başlıklar arasında yer alan güvenlik başlıkları sayesinde istenmeyen güvenlik olaylarını önleyen kısıtlamalar ve talimatlar getirebiliriz.

Neden Ek Güvenlik Başlıklarını Kullanmalı ve Sitemiz İçin Uyarlamalıyız?

Sitemizi bu ek HTTP yanıt başlıkları ile sağlamlaştırmak istememizin ilk sebebi sitemizi daha güvenli bir hale getirmektir. Aşağıda özetlenen bu başlıklar tarayıcıya sitemizle alakalı nasıl davranılmasını istediğimiz hakkında daha fazla bilgi vermektedir.

Sitemizde bu başlıkları kullanarak sitemizi ve site ziyaretçilerini gereksiz güvenlik risklerinden korumaktadır.

En Önemli 6 Güvenlik Başlığı

  • Strict-Transport-Security
  • CSP (Content-Security-Policy)
  • X-Content-Type-Options
  • Referrer-Policy
  • Permissions-Policy
  • X-Frame-Options

Strict-Transport-Security Nedir?

Temel olarak bir site yüklenirken HTTP isteklerini HTTPS olarak açılmaya zorlamaya yarayan bir güvenlik başlığıdır.

Birçok web sitesinden yalnızca HTTP’den HTTPS’e 301 yönlendirmesi kullanılmaktadır. Fakat bu kullanım yeterli olmamaktadır. Çünkü halen saldırıya açık bir durumdadır.

Örnek vermek gerekirse bir kişi bir web sitesine erişmek için direkt olarak siteadi.com yazarsa veya alışkanlık olarak http kullanarak ulaşmaya çalışırsa yönlendirme işlemi yapılmış olsa dahi saldırı için halen fırsat bulunmaktadır.

Bu tür bir saldırı olması halinde ise site ziyaretçilerinin web sitesiyle bağlantısının tehlikeye atılma durumu vardır. Ziyaretçi ile web sitesi arasında iletilen ve alınan tüm bu önemli bilgiler saldırgan tarafından görülebilir hale gelebilir. Bunlar login bilgileri veya daha önemli bilgiler olabilir.

Strict Transport Security (HSTS) başlığı, tarayıcıya web sitesinin tamamına yalnızca güvenli bir HTTPS protokolü ile erişmesi gerektiğini bildirir.

CSP (Content-Security-Policy) Nedir?

CSP, bir içerik güvenlik politikasıdır. Bir web sitesini ve site ziyaretçilerini XSS saldırılarından ve veri saldırılarından korumaktadır.

XSS ise kötü amaçlı bilgisayar korsanları tarafından bir web sitesine kötü amaçlı komut dosyaları yüklemek için güvenlik açıklarından faydalanması anlamını taşımaktadır.

CSP başlığı ile siteniz için onaylanmış içerik kaynaklarının beyaz bir listesini tanımlamanıza olanak tanımaktadır.

X-Content-Type-Options Nedir?

Bu güvenlik başlığı kötü amaçlı kullanıcı tarafından oluşturulan içerikler yoluyla meydana gelebilecek bazı açıklardan faydalanılmasını engeller.

Yapılandırması oldukça kolay olan bu başlığın aslında yalnızca geçerli tek bir değeri vardır, nosniff.

Google Chrome ve IE’nin sunucular tarafından bildirilen farklı bir yanıtın içerik türünü koklamaya çalışmasını engeller ve böylelikle kullanıcının yüklediği içeriğin risklerini ve rastgele indirmelere maruz kalma riskini azaltır.

Referrer-Policy Nedir?

Bu başlığın amacı bir web sitesi yayıncısının örneğin sizin, site ziyaretçisinin bir başka web sitesinin ziyaret etmek için bir bağlantıya tıkladığında hangi bilgilerinizin gönderileceğini kontrol etmenize olanak tanımasıdır.

Bir site ziyaretçisi bir bağlantıya tıkladığı ve sonrasında başka bir siteye geldiğinde ziyaret eden kişinin tarayıcısı o ziyareti hangi web sayfasının gönderdiği hakkında bilgi sağlamaktadır.

Bu başlık ile bilgilerin miktarını sınırlayabilirsiniz.

Permissions-Policy Nedir?

Bir sitenin tarayıcıda hangi özelliklerinin ve API’lerin kullanılabileceğinin kontrol edilmesine olanak tanımaktadır. Bu, site güvenliği açısından yeni bir Header özelliği olarak bilinmektedir.

X-Frame-Options Nedir?

Aslında bu güvenlik başlığı içlerinde en önemlilerinden birisi olarak karşımıza çıkmaktadır.

X-Frame-Options Header ile clickjacking ataklarına karşı koruma sağlarsınız. Clickjacking, saldırganın kendi kontrolündeki sayfa içerisinde eklediği iframe ile hedef siteyi çağırmasına, görünürlüğünü düşürmesine ve sayfayı ziyaret eden kullanıcıya başka bir işlem yaptığını düşündürerek butona tıklaması yada bağlantıya tıklaması sonucunda, hedef site üzerinde işlem yaptırmasına olanak sağlar.

Bu ve benzeri durumları önlemek için ise X-Frame–Options güvenlik başlığı kullanılmaktadır.

Güvenlik Başlıkları Nasıl Kontrol Edilir?

Yukarıda detaylandırdığımız güvenlik başlıklarını kontrol etmenizi sağlayan çok kolay bir yol bulunmaktadır.

Bu siteyi ziyaret ederek sitenizle alakalı test işleminizi gerçekleştirebilirsiniz.

Örnek test sonucu aşağıda yer alan şekildedir:

Hangi başlık yapılandırmalarının sitenizde yer almadığı yukarıda yer alan şekilde verildiği gibi aynı zamanda sayfanın devamında da detaylı olarak sunulmaktadır:

Şimdi sıra kontrolleriniz ardından bu başlık türlerini siteniz için nasıl yapılandıracağınızda.

Güvenlik Başlıklarını Sitenizde Nasıl Uygularsınız?

HSTS Kurulumu (Strict-Transport-Security Kurulumu)

Site içerisindeki tüm URL’lerin HSTS tanımı yapılmalıdır. Bunu sağlamak için aşağıdaki kodu htaccess dosyasına ekleyebilirsiniz:

<IfModule mod_headers.c> Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS </IfModule>

Yukarıdaki kodun işe yaramadığı durumlarda şu sayfadan farklı kod örneklerini deneyebilirsiniz:

https://stackoverflow.com/questions/24144552/how-to-set-hsts-header-from-htaccess-only-on-https

Missing X-Content-Type-Options

Yine güvenlik ve SEO faktörü olarak geçen yukarıdaki header kodu tüm sayfalara uygulanmalıdır.

Örnek Kod:

Header set X-Content-Type-Options "nosniff"

Buradan detaylı kaynağa erişebilirsiniz.

Missing Referrer-Policy

HTTPS kullanmayan sitelere referrer bilgisi verilmemesi tavsiye edilir. Bunun için <head> elementinin altına şu kodu eklemenizi tavsiye ederiz:

<meta name="referrer" content="no-referrer-when-downgrade">

veya htaccess içerisine: 

Referrer-Policy: no-referrer-when-downgrade

Farklı referrer alternatifleri ve MOZ’un bu konuda yaptığı bir araştırma:

https://moz.com/blog/meta-referrer-tag

Missing Permission Policy

Permissions-Policy: geolocation=(self "https://example.com"), microphone=()

Permissions Policy header problemini çözmek için yukarıdaki örnek kodu web.config formatında siteye ekleyebiliriz.

Daha fazla bilgi ve detaylı bir kaynak için şuradan yararlanılabilir:

https://github.com/w3c/webappsec-permissions-policy/blob/main/permissions-policy-explainer.md

X-Frame-Options

X-Frame-Options: SAMEORIGIN

Hepsini ve Daha Fazlasını İçeren Örnek Kod

<IfModule mod_headers.c>

Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS 

Header set X-XSS-Protection "1; mode=block"

Header always append X-Frame-Options SAMEORIGIN

Header set X-Content-Type-Options nosniff

Header always set Referrer-Policy: "no-referrer-when-downgrade"

Header always set Permissions-Policy "geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()"

Header always set Expect-CT "max-age=7776000, enforce"

Header always set Content-Security-Policy "upgrade-insecure-requests"

</IfModule>

Önemli:

Yukarıda yer alan olan kodların sitede test edilerek eklenmesi gerekmektedir. Yukarıdaki kod herhangi bir sistemin çalışmasını engellerse ilgili kodu sizin sisteminize göre düzenlemeniz gerekebilir. Bu kapsamda ilettiğimiz kaynakları kullanabilirsiniz.

Bu yazımızda sizlere HTTP güvenlik başlıklarını aktarmaya gayret ettik. Umarım yazımız siteleriniz için faydalı bir kaynak oluşturur.