WordPress'te HTTP Güvenlik Başlıkları Nasıl Eklenir?

Yayınlanan: 2023-05-18

WordPress, internetteki tüm web sitelerinin %43'ünden fazlasını çalıştıran dünyanın en popüler İçerik Yönetim Sistemidir (CMS).Ancak yaygın kullanımı onu bilgisayar korsanları için ortak bir hedef haline getiriyor.

Kaba kuvvet saldırıları, dosya yükleme güvenlik açıkları ve siteler arası komut dosyası çalıştırma saldırılarının tümü, devam eden tehdide katkıda bulunur.

Neyse ki, web sitenizi daha güvenli ve saldırılara karşı daha az eğilimli hale getirmenin birçok yolu vardır. HTTP Başlıklarının devreye girdiği yer burasıdır.

HTTP Güvenlik Başlıklarını uygulayarak, web sitenizde tarayıcıların ve sunucuların gerçekleştirebileceği eylemleri kısıtlayabilir ve ekstra bir güvenlik katmanı ekleyebilirsiniz. Bu başlıklar, saldırganların istemci tarafındaki güvenlik açıklarından yararlanmasını çok daha zorlaştırır.

Bu yazıda, HTTP güvenlik başlıklarının ne olduğunu ve bunları web sitenize nasıl etkili bir şekilde uygulayabileceğinizi tartışacağız .

HTTP Güvenlik Başlıkları Tam Olarak Nedir?

HTTP Güvenlik Başlıkları, web uygulamaları tarafından web tarayıcılarında güvenlik savunması uygulamak için kullanılan bir yönergeler grubudur. Bu başlıklar, HTTP iletişiminin güvenlik parametrelerini tanımlamak için web tarayıcısı (istemci) ve sunucu arasında değiştirilir. Bu bilgi alışverişi, tarayıcıya sitenizle olan etkileşimleri boyunca nasıl davranması gerektiğini söyler ve hataları görüntüleme ve önbelleği yönetme gibi süreçleri yönetir.

Tabii ki, bu ek güvenlik ve verimlilik büyük ölçüde tarayıcıya bağlıdır. Daha eski web tarayıcıları aynı düzeyde güvenlik veya uyumluluğa sahip olmayacak ve HTTP güvenlik başlıklarını doğru, tam olarak veya hiç işlemeyebilir. Potansiyel olarak bu, ziyaretçinin güvende kalmasına yardımcı olmak için tüm çabalarınıza rağmen, güncel olmayan tarayıcılarının onları hala savunmasız bıraktığı anlamına gelebilir. Web sitesi geliştiricileri olarak, bilgisayarlarında güncel yazılım kullandıklarından emin olmanın ziyaretçinin kendi sorumluluğunda olduğunu kabul etmekle birlikte elimizden geleni yapmalıyız. Modern, güncel bir web tarayıcısı kullandıkları sürece, HTTP güvenlik başlıklarını kullanmamız, onları güvende tutmak için tarayıcı yazılımlarıyla birlikte çalışacaktır.

Bununla birlikte, birincil endişemiz, HTTP güvenlik başlıklarının web sitenizi siteler arası komut dosyası çalıştırma ve kaba kuvvet saldırıları gibi yaygın saldırılardan korumasıdır.Bu başlıkları uygulamanın en etkili yolları, onları WordPress barındırma hesabınıza (sunucu düzeyi) ayarlamak ve Cloudflare gibi DNS düzeyinde bir web sitesi uygulaması güvenlik duvarı kullanmaktır.

Ancak, HTTP güvenlik başlıkları eklemek sitenizin güvenliğini artırmaya yardımcı olabilirken, bunun web sitesi güvenliğinin yalnızca bir yönü olduğunu ve diğer güvenlik önlemleriyle birlikte kullanılması gerektiğini hatırlamanız gerekir. Bu, uygulamalarınızı ve eklentilerinizi güncel tutmayı, hassas verilerinizi şifrelemeyi ve site verilerini ve yapılandırma dosyalarını yedeklemeyi içerir.

Güvenlik başlıkları eklemek için farklı yöntemleri tartışmadan önce, her bir başlığa ayrıntılı olarak göz atalım ve neden önemli olduğunu anlayalım.Güvenlik başlıklarına zaten aşina iseniz, aşağıdaki bölüme geçebilirsiniz.

WordPress HTTP Güvenlik Başlıklarının Türleri

Korumayı artırmak için WordPress web sitenizle birlikte kullanılabilecek birkaç HTTP güvenlik başlığı vardır. En önemlilerinden bazılarına bir göz atalım.

1. X-XSS Koruma Güvenlik Başlığı

Bu güvenlik başlığı, kimliği doğrulanmamış üçüncü tarafların tarayıcıda başka bir web sitesi adına kod yürütmesine izin veren bir güvenlik açığı olan siteler arası komut dosyası çalıştırmayı (XSS) yapılandırmak için kullanılır.

Bir saldırı tespit edildiğinde sitenin görüntülenmesini durdurarak web sitenizdeki birçok XSS saldırısını engeller. X-XSS, potansiyel olarak zararlı öğeleri değiştirerek sayfayı temizlemeye çalışmak yerine siteyi tamamen yüklememek gibi daha güvenli bir seçenek kullanır.

Başlık şu birkaç değerden birine sahip olabilir:

  • X-XSS-Protection: 0 XSS filtrelemeyi devre dışı bırakır (önerilmez)
  • X-XSS-Protection: 1 Çoğu tarayıcıda genellikle varsayılan olan XSS filtrelemeyi etkinleştirir. Bir XSS saldırısı algılanırsa, tarayıcı sayfanın güvenli olmayan kısımlarını kaldırır (temizleme).
  • X-XSS-Koruma: 1; mode=block XSS filtrelemeyi etkinleştirir, ancak sayfayı temizlemek yerine, tarayıcı sayfanın oluşturulmasını engeller (önerilir)
  • X-XSS-Koruma: 1; report=<reporting-uri> XSS filtrelemeyi etkinleştirir. Tarayıcı, siteler arası komut dosyası çalıştırma saldırısı algılanırsa sayfayı temizler ve ihlali bildirir.

2. X-Frame Seçenekleri Güvenlik Başlığı

X-Frame-Options güvenlik başlığı , farklı kaba kuvvet saldırılarını ve DDOS saldırılarını önlemek için kullanılabilir , ancak en etkili kullanımı, WordPress web sitenizdeki çapraz girişli çerçevelere ve tıklama hırsızlığına karşıdır.Bu başlık, web sitenizdeki bir sayfanın tarayıcıdaki iframe öğeleri kullanılarak gömülüp yerleştirilemeyeceğine karar vermenizi sağlar.

X-Frame Seçeneği, iframe'lerin sitenizle dolmasını engelleyerek web sitenizi tıklama hırsızlığına karşı korur. Aralarından seçim yapabileceğiniz iki farklı direktif vardır -DENY ve SAMEORIGIN. Chrome, Safari, Firefox ve Opera gibi tüm popüler web tarayıcılarıyla çalışır.

 X-Frame-Seçenekleri: DENY
 X-Frame-Options: SAMEORIGIN

DENY ile belirtildiğinde, X-Frame-Options başlığı, başka sitelerden yüklendiğinde herhangi bir tarayıcının sayfayı bir çerçeve içinde yüklemeye çalışması durumunda başarısızlığa neden olur. Bunu yapma girişimleri, orijinal siteden bir iframe'e yüklendiğinde de başarısız olur. Öte yandan, SAMEORIGIN'i belirtirsek, sayfayı bir çerçeve içinde kullanmaya devam edebiliriz - onu bir çerçeveye dahil eden site, sayfaya hizmet veren site ile aynı olduğu sürece.

Bu başlık, hassas bilgiler içeren web sayfaları ve ödeme ağ geçitleri ve formlar gibi bilgileri gömen sayfalar için özellikle önemlidir.

3. HTTP Sıkı Aktarım Güvenliği (HSTS) Başlığı

HTTP Strict-Transport-Security, bir web sunucusundan kullanıcının web tarayıcısına siteye yalnızca HTTP kullanılarak erişilmesi gerektiğini ve asla şifrelenmemiş HTTP aracılığıyla erişilemeyeceğini bildirmek için gönderilen bir güvenlik yanıtı başlığıdır.

Bu başlık , kullanıcı adres çubuğuna "http://" yazsa veya bir HTTP bağlantısını izlese bile tarayıcı tarafından HTTPS kullanımını zorunlu kılan bir mekanizma sağlar .Ayrıca, kullanıcıların süresi dolmuş veya geçersiz SSL/TLS sertifikalarını ve diğer tarayıcı uyarılarını göz ardı etmesini de önleyebilir. HSTS değeri, web sitesini ziyaret eden tarayıcı başına ayarlanır. Makine başına ayarlanmamıştır.

HSTS başlığı, herhangi bir alt etki alanını dahil etme seçeneği sunar - kök etki alanından aynı güvenlik düzeyini benimsemek için "includeSubDomains" yönergesini kullanabilirsiniz. Bu, tarayıcı yalnızca HTTPS trafiğine izin vereceğinden, etki alanı (veya alt etki alanları) ile herhangi bir yerel geliştirmeye artık HTTP yoluyla erişilemeyeceği anlamına gelir.

Örneğin, example.com'da gerekli “includeSubdomains ” yönergesine sahip HSTS başlıklarınız varsa, example.com'u ziyaret ettiğinizde güvenli olmayan bağlantılar aracılığıyla example.com'un alt alan adlarına erişemezsiniz. Bu nedenle, “includeSubdomains” kullanmayı seçerseniz dikkatli olun, bunun diğer alan adlarınız için etkileri olabilir.

Bir tarayıcı bir siteden bir HSTS başlığı aldığında, belirtilen süre boyunca HSTS politikasını hatırlayacak ve siteye gelecek tüm istekleri otomatik olarak HTTPS'ye yükseltecektir. Bu, tarayıcı ile sunucu arasındaki tüm iletişimin şifrelenmesini sağlayarak ortadaki adam saldırılarının, gizli dinlemenin ve diğer kurcalama biçimlerinin önlenmesine yardımcı olur.

Bu başlığın sözdizimi şöyledir:

 # includeSubDomains yönergesi olmadan
<IfModule mod_headers.c>
Başlık seti Strict-Transport-Security: “max-age=63072000;”
</IfModule>
# includeSubDomains yönergesi ile
<IfModule mod_headers.c>
Başlık seti Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" 
</IfModule>

max-age=<expire-time> yönergesi, tarayıcının bir siteye yalnızca HTTPS kullanılarak erişilebileceğini hatırlaması gereken süreyi (saniye cinsinden) belirtir. Örneğin, yukarıdaki örnekte maksimum yaş iki yıl olarak ayarlanmıştır. Servbolt'tan Servebolt CDN veya Hızlandırılmış Etki Alanlarına sahip olmayı seçtiyseniz, otomatik olarak 1 yıllık HSTS uzunluğuna sahip olacaksınız.

4. Yönlendirme Politikası Başlığı

Bu HTTP başlığı, başvuran başlığı aracılığıyla gönderilen yönlendiren bilgisinin ne kadarının isteklere dahil edilmesi gerektiğini kontrol eder. Bir site ziyaretçisi bir bağlantıya tıkladığında gönderilen bilgi miktarını sınırlar. Bu, özel bilgiler içeren bir sayfanın URL'si gibi hassas bilgilerin diğer web sitelerine sızmasını önlemeye yardımcı olur .

Birkaç değeri olabilir - işte hızlı bir özet:

  • yönlendiren yok: Yönlendiren başlığı hiçbir koşulda asla gönderilmez.
  • No-referrer-while-downgrade: Bir HTTPS sitesinden bir HTTP sitesine gezinirken Yönlendiren başlığı gönderilmez.
  • Kaynak: Yönlendiren başlığı yalnızca yönlendiren sayfanın kaynağını (şema, ana bilgisayar ve bağlantı noktası) içerecektir.
  • Origin-while-cross-origin: Yönlendiren başlığı, aynı kaynak içindeki sayfalar arasında gezinirken yönlendiren sayfanın tam URL'sini ve farklı bir kaynağa giderken yalnızca kaynağı içerecektir.
  • Strict-origin: Referer başlığı yalnızca yönlendiren sayfanın orijinini içerecek ve cross-origin istekler için gönderilmeyecektir.
  • Strict-origin-When-cross-Origin: Referer başlığı, yönlendiren sayfanın orijinini içerecek ve aynı sitedeki orijinler dışında çapraz orijinli istekler için gönderilmeyecektir. Veri sızıntısı riskini azaltırken başlığın kullanışlılığını koruduğu için bu ayarı kullanmanızı öneririz.
  • Güvenli olmayan url: Yönlendiren başlığı, güvenlikten bağımsız olarak herhangi bir istek gerçekleştirirken kaynak, yol ve sorgu dizesini gönderir.

Yönlendirme politikası başlığı hakkında derinlemesine bir tartışma için Google web.dev'in yönlendirme politikası için en iyi uygulamalar hakkındaki makalesini okuyun .

5. X-Content-Type-Options Başlığı

X-Content-Type-Options başlığı, tarayıcılara MIME türleri hakkında bilgi vermek için sunucu tarafından bir HTTP yanıtında gönderilir. Bu başlığın amacı, tarayıcıların dosyaları başlıkta belirtilenden farklı bir MIME türü olarak yorumlamasını engellemektir .

Bu başlık tek bir "nosniff" değerine sahip olabilir. Sözdizimi aşağıdaki gibidir:

 X-Content-Type-Options: nosniff

MIME karışıklık saldırılarına karşı çok etkilidir - bu güvenlik başlığının kullanılması, tarayıcının dosyaları güvenlik açıklarına yol açabilecek beklenmedik şekillerde yorumlamasını engelleyebilir. Örneğin, bir saldırgan .jpg uzantılı ancak aslında bir komut dosyası olduğu için içerik içermeyen bir dosya yüklerse, X-Content-Type-Options başlığının "nosniff" olarak ayarlanması tarayıcının komut dosyasını yürütmesine izin vermez, böylece kullanıcıları olası ihlallerden korur.

6. İçerik Güvenliği Politikası(CSP) Başlığı

Content-Security-Policy, içeriğin kaynağını belirtmek için kullanılan bir güvenlik başlığıdır ve bir web sitesi veya web uygulamasında yüklenmesine ve çalıştırılmasına izin verilen içerik için bir mekanizma sağlar. Bu başlık, bir dizi ilke belirterek, bir web sayfasında izin verilen içerik türlerini kısıtlayabilir ve çeşitli güvenlik tehdidi türlerini azaltabilir. Veri hırsızlığı, site tahrifatı ve kötü amaçlı yazılım dağıtımı gibi suçlar için kullanılan Siteler Arası Komut Dosyası Çalıştırma (XSS) ve Veri Enjeksiyonu saldırılarına karşı ek bir güvenlik katmanıdır.

Content-Security-Policy başlığı, yüklenebilecek kaynak türlerini kontrol etmenin yanı sıra, tarayıcıya başlıkta belirtilen politikaların herhangi bir ihlalini nasıl ele alması gerektiği konusunda talimat vermenin bir yolunu da sağlar. Örneğin, bir ilke, bir kaynağın ilkeyi ihlal etmesi durumunda tarayıcının bir uyarı yayınlaması veya kaynağın yüklenmesini engellemesi gerektiğini belirtebilir.

Politikaların çalışması için sunucunun Content-Security-Policy başlığını döndürecek şekilde yapılandırılması gerekir. Politikanızı şu şekilde belirtmek için CSP HTTP başlığını kullanabilirsiniz:

 İçerik-Güvenlik-Politikası: politika

Bu politika, İçerik Güvenliği Politikanızı açıklayan politika direktiflerini içeren bir dizidir. Örneğin, CSP'yi uygulamak için .htaccess dosyanıza aşağıdaki satırları ekleyebilirsiniz.

 <IfModule mod_headers.c>
Başlık seti Content-Security-Policy "default-src https: 'unsafe-eval' 'unsafe-inline' 'self'; object-src 'self'; font-src https: data: 'self' http: fonts.googleapis. com theme.googleusercontent.com; connect-src https: wss: 'self'; img-src https: data: 'self' http: *.gravatar.com; işçi-src blob: https: 'self' 'unsafe-inline "güvenli olmayan değerlendirme"; media-src https: blob: "self"; stil-src https: "güvenli olmayan değerlendirme" "güvenli olmayan satır içi" "self" http: fonts.googleapis.com"
</IfModule>

Bir WordPress web sitesinde CSP uyguluyorsanız, WordPress'in düzgün çalışması için "unsafe-inline" ve "unsafe-eval" öğelerinin gerekli olduğunu unutmamalısınız. Yukarıdaki yapılandırma, çoğu WordPress web sitesi için iyi bir başlangıç ​​noktasıdır. Ancak, her bölümün ne anlama geldiği net bir şekilde anlaşılmadan yukarıdaki yapılandırmanın kullanılmasıyla ilişkili riskler vardır. Aşağıda her bir direktifin dökümü verilmiştir:

  • default-src – Bu yönerge, diğer yönergeler tarafından geçersiz kılınmadıkça tüm kaynak türleri için varsayılan ilkeyi ayarlar.Bu durumda, kaynakların aynı kaynaktan ("self") yanı sıra HTTPS kaynaklarından ve "unsafe-eval" veya "unsafe-inline" kullanan betiklerden yüklenmesine izin verir.
  • object-src – Bu yönerge, Flash veya Java uygulamaları gibi bir sayfaya gömülebilecek nesne türlerini kısıtlar.Burada nesnelerin yalnızca aynı kaynaktan ('self') yüklenmesine izin verir.
  • font-src – Bu yönerge, yazı tiplerinin yüklenebileceği kaynakları kısıtlar.Burada, yazı tiplerinin HTTPS kaynaklarından, veri URI şemasından ve aynı kaynaktan ("kendinden") veya Google Yazı Tipleri ve Google Kullanıcı İçeriğinden HTTP kaynaklarından yüklenmesine izin verir.
  • connect-src – Bu yönerge, AJAX istekleri veya WebSockets gibi ağ istekleri için kullanılabilecek kaynakları kısıtlar.Burada bağlantıların yalnızca HTTPS veya WebSockets üzerinden ve aynı kaynaktan ('self') yapılmasına izin verir.
  • img-src – Bu yönerge, görüntülerin yüklenebileceği kaynakları kısıtlar.Burada, görüntülerin HTTPS kaynaklarından, veri URI şemasından ve aynı kaynaktan ("self") veya Gravatar'dan HTTP kaynaklarından yüklenmesine izin verir.
  • işçi-src – Bu yönerge, web çalışanlarının yüklenebileceği kaynakları kısıtlar.Burada, çalışanların yalnızca blob URI şemasından, HTTPS kaynaklarından ve 'unsafe-eval' veya 'unsafe-inline' kullanan betiklerden yüklenmesine izin verir.
  • media-src – Bu yönerge, ses veya video gibi medya kaynaklarının yüklenebileceği kaynakları kısıtlar.Burada medyanın yalnızca HTTPS kaynaklarından, blob URI şemasından ve aynı kaynaktan ('self') yüklenmesine izin verir.
  • style-src – Bu yönerge, stil sayfalarının yüklenebileceği kaynakları kısıtlar.Burada, stillerin HTTPS kaynaklarından ve "unsafe-eval" veya "unsafe-inline" kullanan betiklerden, ayrıca aynı kaynaktan ("self") ve Google Fonts'tan HTTP kaynaklarından yüklenmesine izin verir.

CSP başlığını WordPress örneğinizle kullanırken, bazı eklentiler ve hizmetler üçüncü taraf JavaScript'e dayanabileceğinden,CSP başlıklarının yanlış uygulanmasının WordPress Admin Dashboard'u bozacağını unutmamak önemlidir.

Bunu düzeltmek için, her bir güvenlik kuralını başlıklar dosyanıza manuel olarak eklemeniz gerekecek. Alternatif, ancak daha az güvenli bir yol, yönetici kontrol panelinizde CSP başlığını devre dışı bırakmaktır. Örneğin, servebolt.com'da şunları yapıyoruz :

 Başlık seti X-Frame-Options SAMEORIGIN
Header set Referrer-Policy solid-origin-When-cross-Origin
Başlık seti X-XSS-Protection "1; mod=blok"
<Eğer "%{REQUEST_URI} !~ /wp-admin/">
# yönetici ekranı değilse yalnızca başlık ekleyin
Başlık her zaman Content-Security-Policy "default-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.intercomcdn.com cdn.firstpromoter.com servebolt.containers olarak ayarlanır .piwik.pro *.intercom.io cdn.getreplybox.com platformu.twitter.com v0.wordpress.com cdn.jsdelivr.net servebolt.piwik.pro ; media-src 'self' *.intercomcdn.com verileri: ; img -src 'self' 'unsafe-inline' *.intercom.io *.intercomcdn.com *.intercomassets.com verileri: raskesider.raskesider.no *.servebolt.com secure.gravatar.com servebolt.piwik.pro ; bağlan- src 'self' ws: nexus-websocket-a.intercom.io *.piwik.pro servebolt.piwik.pro *.intercom.io ; font-src 'self' *.intercomcdn.com data: ; frame-src 'self app.getreplybox.com platform.twitter.com player.vimeo.com wordpress.org www.youtube.com caniuse.bitsofco.de video.wordpress.com *.intercom.io; çerçeve ataları 'self' *.servebolt. com;manifest-src 'kendi' ;"
</Eğer>

Sitenizde CSP'yi zorunlu kılarken, HTTPS kullanmıyorsanız bunun geliştirme ortamınızı bozabileceğini unutmayın. Siteniz için nasıl bir politika oluşturacağınızdan emin değilseniz, ValidBot – CSP Sihirbazı veya Rapor URI'si: CSP oluşturucu gibi bir grafik aracı kullanmalısınız .

7. İzinler-Politika Başlığı

İzin Politikası, geliştiricilerin bir web sitesinde hangi işlevlerin uygulanıp uygulanamayacağını açıkça beyan etmeleri için mekanizmalar sağlar .Web sitesinin gerektirdiği izin kümesini yönetir. Bu başlık, Javascript API'lerinin kötüye kullanılması, kullanıcıları izleme ve virüslü kodun yürütülmesi gibi belirli güvenlik ve gizlilik risklerini önlemek için bir web sitesinin yeteneklerini kısıtlamak için kullanılır.

İzin İlkesi, bir sunucunun bir özelliğin belirli bir belgede kullanılıp kullanılamayacağını belirlemesine olanak tanır. Önceden tanımlanmış belirli değerleri alan bir kaynak listesi olanizin verilenler listelerini kullanır .Permission-Policy başlığının değeri, virgülle ayrılmış yönerge adları listesinden ve bir web sitesinin gerektirdiği çeşitli izinleri açıklayan değerlerinden oluşur.

Permissions-Policy başlığının genel sözdizimi şöyledir:

 İzin Politikası: <directive>=<allowlist>

Örneğin, coğrafi konuma tüm erişimi engellememiz gerekirse, şunu yaparız:

 İzinler-Politikası: coğrafi konum=()

Burada, () simgesi boş bir izin verilenler listesini belirtir. Bir orijin alt kümesine erişime izin vermek için şunu yaparız:

 <IfModule mod_headers.c>
Başlık her zaman Permissions-Policy "geolocation=(self 'https://abc.example.com' 'https://pqr.example.com'), midi=(), sync-xhr=(), accelerometer=( ), jiroskop=(), manyetometre=(), kamera=(), mikrofon=(), tam ekran=(öz)"
</IfModule>

Başka bir örnek verelim. Aşağıdaki başlık değeri, bir web sitesini yalnızca ana belgeyle aynı kaynaktan sunuluyorsa komut dosyalarını yürütmesi için kısıtlar:

 İzin Politikası: script-src 'self'

Permissions-Policy başlığı, benzer işlevsellik sağlayan ancak farklı bir sözdizimi ve izinler açısından daha az kapsam içeren geleneksel Content-Security-Policy başlığını değiştirmek veya tamamlamak için kullanılabilir. Bu başlık şu anda yalnızca Google Chrome ve diğer Chromium tabanlı tarayıcılarda desteklenendeneysel bir teknolojidir .İzinleri kontrol etmek için daha güçlü ve esnek bir mekanizma sağlar ve gelecekte benimsenmesinin artması beklenmektedir. Kendiniz denemek isterseniz, izin ilkelerini kolayca oluşturmak için İzin İlkesi Üst Bilgisi Oluşturucu'yu kullanabilirsiniz.

.htaccess Dosyasını Kullanarak HTTP Güvenlik Başlıkları Ekleme

HTTP güvenlik başlıkları eklemenizi tavsiye ettiğimiz yol, .htaccess dosyasını doğrudan düzenlemektir. Bu, Apache web sunucuları tarafından en yaygın olarak kullanılan bir sunucu yapılandırma dosyasıdır. Bu dosyayı düzenleyerek, WordPress'teki HTTP güvenlik üstbilgilerinin sunucu düzeyinde yapılandırıldığından emin olursunuz.

Bu yöntemi kullanmak için web sitenizin.htaccessdosyasına erişmeniz gerekir . Bir FTP istemcisi kullanılarak Apache sunucularında erişilebilir. Herhangi bir değişiklik yapmadan önce mevcut.htaccess dosyanızın yedeğini almanız kesinlikle önerilir.

Öncelikle, barındırma kontrol panelinizdeki bir FTP istemcisini veya dosya yöneticisi aracını kullanarak sitenize giriş yapın. Web sitenizin kök klasöründe.htaccessdosyasını bulun ve 'Düzenle' seçeneğini sağ tıklayın. Bu, dosyayı bir metin düzenleyiciyle açacaktır.Sitenize HTTPS güvenlik başlıkları eklemek için .htaccessdosyasının en altına ilgili kodu ekleyebilirsiniz.

Aşağıdaki örnek kod başlangıç ​​noktası olarak kullanılabilir.En sık kullanılan HTTP güvenlik başlıklarını önerilen ayarlarla ayarlar.

 <IfModule mod_headers.c>
Başlık seti Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
Başlık seti X-XSS-Protection "1; mod=blok"
Başlık seti X-Content-Type-Options "nosniff"
Başlık seti X-Frame-Options DENY
Üstbilgi, Yönlendiren Politikasını "no-referrer-When-downgrade" olarak ayarladı
Başlık seti Content-Security-Policy "default-src https: 'unsafe-eval' 'unsafe-inline' 'self'; object-src 'self'; font-src https: data: 'self' http: fonts.googleapis. com theme.googleusercontent.com; connect-src https: wss: 'self'; img-src https: data: 'self' http: *.gravatar.com; işçi-src blob: https: 'self' 'unsafe-inline "güvenli olmayan değerlendirme"; media-src https: blob: "self"; stil-src https: "güvenli olmayan değerlendirme" "güvenli olmayan satır içi" "self" http: fonts.googleapis.com"
Başlık her zaman Permissions-Policy "geolocation=(self 'https://abc.example.com' 'https://pqr.example.com'), midi=(), sync-xhr=(), accelerometer=( ), jiroskop=(), manyetometre=(), kamera=(), mikrofon=(), tam ekran=(öz)"
</IfModule>

Yukarıdaki yapılandırmayı .htaccess dosyanıza eklediğinizde, ilgili başlıklar tüm web isteklerine uygulanacaktır.

Chrome DevTools'ta "Ağ" sekmesini açıp isteğinizin yanıt başlıklarını inceleyerek başlıkların kullanılıp kullanılmadığını doğrulayabilirsiniz.

Ağ Sekmesi Chrome Geliştirici Araçları

Kodu ekledikten sonra değişikliklerinizi kaydedin ve beklendiği gibi çalıştıklarından emin olmak için web sitenizi tekrar ziyaret edin. .htaccess dosyanızı düzenlerken de dikkatli olmalısınız çünkü yanlış kod başlıkları veya yazım hataları 500 Dahili Sunucu Hatası gibi hataları tetikleyebilir .

İçerik Dağıtım Ağı (CDN) Kullanarak WordPress'e HTTP Güvenlik Başlıkları Ekleme

İçerik Dağıtım Ağı (CDN), web performansını iyileştirmek için bir kullanıcıya en yakın ağ konumundan önbelleğe alınmış internet içeriği sağlayan, coğrafi olarak dağıtılmış bir grup sunucudur. Cloudflare gibi popüler CDN'lerayrıca web sitenize HTTP başlıkları eklemenizi sağlar.

Örnek olarak Cloudflare'ı ele alalım ve bir CDN kullanarak HTTP başlıklarını nasıl ekleyebileceğimizi görelim. Cloudflare, CDN hizmetiyle birlikte ilkel bir ücretsiz web sitesi güvenlik duvarı sunar, ancak daha gelişmiş güvenlik özellikleri bir ödeme duvarının arkasında kilitlidir.

WordPress web sitenizde Cloudflare kurmak oldukça kolaydır. Cloudflare'nin web sitesinde manuel olarak kaydolabilir ve etkinleştirmek için ekrandaki adımları takip edebilirsiniz. Cloudflare web sitenizde etkinleştirildikten sonra, Cloudflare hesabınızın panosundaki SSL/TLS sayfasına gidin.

Daha sonra 'Uç Sertifikalar' sekmesine geçmeniz ve HTTP Strict Transport Security (HSTS) bölümünü bulmanız ve 'HSTS'yi Etkinleştir' seçeneğini tıklamanız gerekecektir. 'HSTS'yi Etkinleştir' düğmesini açtıktan sonra, sitenizde bu özelliği etkinleştirmenize yardımcı olacak talimatları içeren bir pencere açılacaktır. İşleme devam etmek için 'İleri' düğmesine tıklayın, HTTP güvenlik başlıkları ekleme seçeneğini göreceksiniz.

Buradan sitenizde HSTS'yi etkinleştirebilir ve ayrıca HSTS'yi HTTPS kullanan alt alan adlarına uygulamayı seçebilirsiniz. Bu yöntemi kullanmak, sitenize HTTP güvenlik başlıklarını kullanarak temel koruma sağlar, ancak dezavantajı, Cloudflare'nin şu anda X-Frame-Options eklemenize izin vermemesidir.

Servebolt.com ve Cloudflare içindeki diğer tüm alanlar için HSTS'nin varsayılan olarak etkin olduğunu belirtmekte fayda var.

Bir WordPress Eklentisi Kullanarak HTTP Güvenlik Başlıkları Ekleme

HTTP başlıklarını eklemenin ve yapılandırmanın üçüncü bir yöntemi, bir eklenti kullanmaktır. Bu, WordPress web sitenize HTTP Güvenlik başlıkları eklemenin en kolay yollarından biri olsa da, genellikle başlıkları manuel olarak yapılandırmaktan biraz daha az etkilidir.

Birçok güvenlik eklentisinin güvenlik başlıkları ekleme seçeneği içerdiğini başka bir yerde okumuş olabilirsiniz. Ancak, bir güvenlik eklentisi kullanmamanızı öneririz. Bunları kullanmanın neden ve endişelerini anlamak için WordPress Güvenlik Eklentileri hakkındaki makalemizi okuyun .

Bu bölüm, çeşitli başlıkları etkinleştirmenize veya devre dışı bırakmanıza ve bunlar için farklı parametreler ayarlamanıza izin verecektir. Etkinleştirebileceğiniz tam başlıklar, seçtiğiniz eklentiye bağlı olarak değişir, ancak X-XSS-Protection, X-Content-Type-Options, X-Frame-Options ve Strict-Transport-Security gibi yaygın olanlar, çoğu eklenti.

Web Sitenizdeki HTTP Güvenlik Başlıklarını Nasıl Kontrol Edebilirsiniz?

WordPress web sitenize HTTP güvenlik başlıklarını ekledikten sonra, bunların doğru yapılandırıldığından ve beklendiği gibi çalıştığından emin olmanız gerekir. Test yapmak için internette bulunan birçok ücretsiz araçtan birini kullanabilirsiniz. Yapılandırmanızı test etmenin ve tüm güvenlik başlıklarının doğru çalıştığını doğrulamanın kolay bir yolunu sunan Güvenlik Başlıklarını veya SSL Laboratuvarlarını kullanmanızı öneririz .

Bu araçlar, web sitenizin güvenlik başlıklarını değerlendirecek ve size ayrıntılı bir rapor sunacaktır. Ayrıca web sitenizin hangi HTTP güvenlik başlıklarını gönderdiğini ve hangilerinin gönderilmediğini de söylerler. Ardından sitenize A+'dan F'ye kadar bir not verilir ve bu notun nasıl belirlendiği açıklanır.

Örneğin, Vogue'un web sitesini test ederken, birçok önemli HTTP başlığının eksik olduğunu gördük, bu nedenle yalnızca C notu aldı.

Vogue SSL Testi

Ve kendi web sitemizi test ederken tahmin edebileceğiniz gibi, A+ notu alıyor.

Servebolt SSL Testi

Çözüm

Hiç şüphe yok ki, HTTP başlıklarını uygulamak, web sitenizi güvence altına almak için önemli bir adımdır. HTTP başlıklarını web sitenize başarıyla ekledikten sonra, göz önünde bulundurmanız gereken birkaç ek adım daha:

  1. Güvenlik açıklarını test edin : Sitenizi, Siteler Arası Komut Dosyası Çalıştırma (CSS) ve Siteler Arası İstek Sahtekarlığı (CSRF) gibi yaygın güvenlik açıkları açısından test etmek önemlidir.Bu amaçla OWASP ZAP ve Burp Suite gibi araçları kullanabilirsiniz .
  2. Değişiklikleri İzle : Beklenmedik değişiklikler için başlıkları düzenli olarak izlemeniz gerekir, çünkü bu genellikle bir güvenlik açığından yararlanma girişimleri olduğunu gösterir.
  3. Başlıkları güncelleyin : Yeni tehditler ortaya çıktıkça, en son güvenlik uygulamalarından haberdar olmak ve başlıklarınızı buna göre güncellemek önemlidir.

Deneysel olarak daha hızlı olan yönetilen barındırma ile ilgileniyor musunuz?

WordPress barındırma yaklaşımımızı deneyin – başlamak ücretsizdir ve avantajları şunları içerir:

  • Ölçeklenebilirlik: Gerçek kullanıcı iş yükü testlerinde, Servebolt ortalama 65 ms yanıt süresi, ikinci en iyi yanıt süresinden 4,9 kat daha hızlı yanıt süresi sağladı.
  • En hızlı küresel yükleme süreleri: 1,26 saniyelik ortalama sayfa yükleme süreleri, bizi küresel WebPageTest sonuçları listesinin en üstüne yerleştirdi.
  • En yüksek bilgi işlem hızı: Servebolt sunucuları, saniyede ortalamadan 2,44 kat daha fazla sorgu işleyerek ve PHP'yi ikinci en iyi sunucudan 2,6 kat daha hızlı çalıştırarak daha önce duyulmamış veritabanı hızları sağlar!
  • Mükemmel güvenlik ve çalışma süresi: Tüm monitörlerde %100 çalışma süresi ve SSL uygulamamızda A+ derecesi ile sitenizin çevrimiçi ve güvenli olduğundan emin olabilirsiniz.

Kısacası, hosting hizmetini sizin üzerinizden almamıza izin vererek, sitenizin güvenliğini, hızını ve performansını iyileştirmeyi kolaylaştıracaksınız. Bizi test etmek için Servebolt'a kaydolun.