İçerik Güvenliği Politikası (CSP) Açıklaması
Yayınlanan: 2023-04-18Siber güvenlik tehditlerinin hızla gelişmesiyle birlikte, tek bir savunma katmanına güvenmek artık çevrimiçi varlığınızı korumak için yeterli değil. Bu, web sitesi sahiplerinin en iyi derinlemesine savunma kavramıyla temsil edilen çok katmanlı bir güvenlik yaklaşımına sahip olmalarını zorunlu kılar.
Web sitelerinde ve web uygulamalarında, istemci tarafında ek güvenlik kontrollerini zorlamak için özel olarak tasarlanmış HTTP güvenlik yanıt başlıkları kullanılarak derinlemesine savunma uygulanabilir. HTTP yanıt başlıkları, web uygulamalarını hedef alan siber saldırılara karşı önemli bir ikinci savunma hattıdır.
Anahtar HTTP güvenlik yanıtı başlıklarından biri olan İçerik Güvenliği Politikası (CSP), web sitenizi ve ziyaretçilerini siteler arası komut dosyası çalıştırma (XSS) ve veri enjeksiyon saldırılarının yıkıcı sonuçlarından etkili bir şekilde koruyabilir.
Bu kılavuzda, İçerik Güvenliği Politikasının neden önemli bir HTTP güvenlik başlığı olduğunu ve WordPress'i hedefleyen çok çeşitli karmaşık siber saldırıları başarılı bir şekilde azaltmak için sitenizde derinlemesine savunmayı nasıl uygulayacağınızı öğreneceksiniz.
HTTP Yanıt Başlıkları nedir?
HTTP yanıt başlıkları, web sitelerinde ve web uygulamalarında uygulanan ve tarayıcının istenen içerikle nasıl etkileşime gireceğini tanımlayan bir dizi kontroldür. HTTP yanıt başlıklarını uygulamak, web sitesi sahiplerinin kullanıcı deneyimini önemli ölçüde geliştirmesine ve web sitelerinin işlevselliğini, performansını ve güvenliğini iyileştirmesine yardımcı olabilir.
Web sitesi ziyaretçileri tarafından talep edilen içerikle birlikte küçük bilgi parçaları gönderildikçe, HTTP yanıt başlıkları, tarayıcıların web sunucusundan alınan yanıtı nasıl yorumlayacağını ve işleyeceğini değiştirir. Web sitesinin içeriği ve işlevselliği değişmeden kalırken, HTTP yanıt başlıklarının uygulanması, kullanıcıların web sitesini nasıl algıladıklarını değiştirebilir.
Güvenlik Tehditlerine Karşı İkinci Bir Savunma Katmanı Olarak HTTP Güvenlik Yanıtı Başlıkları
İçerik Güvenliği Politikası gibi HTTP yanıt başlıklarının kullanıldığı kilit alanlardan biri web sitesi güvenliğidir. HTTP yanıt başlıklarının sağladığı güçlü işlevsellik, onları WordPress gibi dinamik web uygulamalarını hedef alan birçok siber saldırıya karşı önemli bir ikinci savunma hattı haline getirir.
Siber saldırılara karşı ilk savunma hattı, saldırı yüzeyini azaltan ve uygulama düzeyindeki güvenlik açıklarını ortadan kaldıran bir dizi kod tabanlı ve sunucu tarafı güvenlik önleminden oluşur. Bu, güvenli kodlama uygulamalarını kullanmayı, güçlü erişim kontrol politikaları oluşturmayı ve gelen istekleri incelemek ve kötü niyetli trafiği filtrelemek için bir web uygulaması güvenlik duvarı uygulamayı içerir.
Güçlü bir ilk savunma hattına sahip olmak kesinlikle gerekli olsa da, tek bir güvenlik katmanına güvenmek, web sitenizi giderek daha karmaşık hale gelen saldırılara karşı savunmasız bırakabilir. Özellikle bir saldırgan, yama yapılmadan bırakılan bir güvenlik açığını tespit edip bundan yararlanabiliyorsa, tek bir güvenlik denetimi kolayca atlatılabilir.
İçerik Güvenliği Politikası ve diğer güvenlik yanıtı başlıkları, kötü niyetli saldırıların neden olduğu zararı azaltarak ek bir koruma katmanı sağlar. Kötü niyetli bir bilgisayar korsanı web sitenizdeki bir güvenlik açığını başarılı bir şekilde tespit edebilirse, güçlü bir ikinci savunma hattı, saldırganın bu güvenlik açığından yararlanmasını çok daha zorlaştıracaktır.
İçerik Güvenliği Politikası nedir?
İçerik Güvenliği Politikası (CSP), bir web sitesinin veya belirli bir web sayfasının yüklenmesine izin verilen içerik için güvenilir kaynakların bir listesini ve bunun için hangi protokolün kullanılacağını tanımlamak için kullanılan bir güvenlik mekanizmasıdır. Bu, bir web sayfasına gömülebilen komut dosyaları, stil sayfaları, resimler ve diğer içerik türlerini içerebilir.
İçerik Güvenliği Politikası, mevcut web sitesinin dışında bulunan içerik için yetkisiz isteklerin engellenmesine yardımcı olan, derinlemesine bir güvenlik denetimidir. Buna ek olarak CSP, satır içi komut dosyalarının yürütülmesini başarıyla engeller ve güvenli olmayan dinamik kod yürütülmesini kısıtlar.
Bir HTTP güvenlik yanıtı başlığı olarak CSP, web sitesi sahibi tarafından yapılandırılan talimatları ziyaretçinin tarayıcısına iletir. Bu durumda tarayıcının talimatları izlemesi ve İçerik Güvenliği Politikası kuralları tarafından yetkilendirilmemiş içeriğin teslimini engellemesi gerekir. Bu şekilde, tarayıcı belirli içeriğe bir web sayfası tarafından atıfta bulunulduğunu görecek ancak yüklemeyi reddedecektir.
İçerik Güvenliği Politikası Neden Bu Kadar Önemli?
İkinci bir savunma hattı olarak İçerik Güvenliği Politikası, çoğu durumda saldırganın bir web sitesinin güvenliğini ihlal etmesini engellemez. Yine de, kötü amaçlı yazılımın bulaşmasının yıkıcı sonuçlarını hafifletmeye yardımcı olacak ve bilgisayar korsanının bundan yararlanma girişimlerini engelleyecektir.
Hassas bilgileri çalmak veya diğer kötü niyetli faaliyetleri gerçekleştirmek amacıyla web sitenize kötü amaçlı yazılım enjekte edilmiş olsa bile, sağlam bir CSP politikası sizi ve müşterilerinizi güvende tutacaktır. Kötü niyetli aktör, müşterilerinizin web sitenize olan güvenini suistimal edemez, çünkü tarayıcı herhangi bir kötü amaçlı kodun yürütülmesini en başta engelleyecektir.
Web siteniz üzerinde tam kontrol sahibi olurken bilgisayar korsanlarının web sitenizden yararlanma çabalarını etkisiz hale getirme ve güvenliği ihlal edildikten sonra kötü amaçlı yazılımları temizleme yeteneği, İçerik Güvenliği Politikasını modern web sitelerinin ve web uygulamalarının güvenliğini sağlamak için güçlü bir araç haline getirir.
CSP Nelerden Korur?
İçerik Güvenliği Politikası, bir web sitesini ve ziyaretçilerini kötü amaçlı yazılım bulaşmalarının yanı sıra saldırgan tarafından kontrol edilen kaynaklarda barındırılan kötü amaçlı komut dosyalarına dayanan izinsiz giriş girişimlerinin kolaylaştırdığı bir dizi siber saldırıdan korur. Buna, İçerik Güvenliği Politikası tarafından hafifletilen ilk üç saldırı vektörü olan siteler arası komut dosyası çalıştırma (XSS), dosya dahil etme saldırıları ve tıklama hırsızlığı dahildir.
Siteler Arası Komut Dosyası Çalıştırma (XSS)
Siteler arası komut dosyası oluşturma (XSS), bir web sayfasına kötü amaçlı kod eklemeyi içeren bir enjeksiyon saldırısıdır. Kod daha sonra web sayfası yüklendiğinde tarayıcı tarafından yürütülerek saldırganın hassas bilgileri çalmasına, kullanıcı oturumlarını ele geçirmesine veya kötü amaçlı yazılım dağıtmasına olanak tanır.
Bilgisayar korsanları, siteler arası komut dosyası çalıştırma saldırılarını gerçekleştirmek için, HTML'ye gömülen bir satır içi komut dosyası olarak veya genellikle saldırgan tarafından kontrol edilen bir web sitesinde barındırılan harici bir komut dosyasına başvurarak kötü amaçlı yazılım enjekte edebilir. İçerik oluşturma işlemi sırasında, kötü amaçlı kod kullanıcının tarayıcısına yüklenecek ve bilgisi veya onayı olmadan yürütülecektir.
WordPress site sahiplerini etkileyen siteler arası komut dosyası çalıştırma saldırılarına iyi bir örnek, alıcının ödeme bilgilerini çalacak olan WooCommerce kasasına kart gözden geçirme kötü amaçlı yazılım enjekte etmektir. Siteler arası komut dosyası çalıştırma saldırılarını gerçekleştirmek için kullanılan kart tarayıcıları ve diğer JavaScript algılayıcı türleri, bir web sayfasının kaynak kodunda genellikle şu şekilde görünür:
<script type="text/javascript" src="https://hackerswebsite/evil.js"></script>
Bir satır içi komut dosyası söz konusu olduğunda, komut dosyası etiketlerine gömülü veya hatta stil etiketlerini kullanarak bir stil sayfası kılığına girmiş kötü amaçlı kod göreceksiniz.
Siteler arası komut dosyası çalışmasının azaltılması, İçerik Güvenliği Politikasını uygulamanın birincil amacıdır. İçerik Güvenliği Politikası (CSP), satır içi komut dosyalarının yürütülmesini, değerlendirme işlevi kullanılarak enjekte edilen güvenli olmayan Javascript'i ve güvenilmeyen kaynaklardan yüklenen komut dosyalarını engelleyerek, bir web sitesinde rastgele kod yürütme riskini etkili bir şekilde azaltır.
Dosya Dahil Etme Saldırıları
Dosya dahil etme saldırıları, İçerik Güvenliği Politikasının hafifletebileceği başka bir enjeksiyon saldırısı türüdür. Bir izinsiz giriş tekniği olarak, uzaktan dosya dahil etme saldırıları, bilgisayar korsanının harici bir kaynakta barındırılan kötü amaçlı kodu yürütmek için farklı web sitesi alanlarındaki zayıf girdi doğrulamasından yararlanmasına olanak tanır.
Uzaktan dosya dahil etme saldırıları, bir web kabuğu arka kapısı kurarak bir web sitesine girmek amacıyla genellikle WordPress eklentilerindeki ve temalarındaki yamalanmamış güvenlik açıklarından yararlanır. Siteler arası komut dosyası çalıştırmayı hafifletmeye benzer şekilde İçerik Güvenliği Politikası, tüm şüpheli harici komut dosyalarının web sitesine eklenmesini etkili bir şekilde engelleyerek saldırganın uzaktan dosya ekleme (RFI) güvenlik açıklarından yararlanmasını neredeyse imkansız hale getirir.
tıklama hırsızlığı
İçerik Güvenliği Politikası, web sitesi sahiplerinin içerik yüklemek için güvenilir kaynakların bir listesini tanımlamasına izin vermenin yanı sıra, web sitesindeki içeriği çerçevelere yerleştirmeye yetkili web sitelerinin listesini sınırlamaya yardımcı olabilir. Bu, hedef odaklı kimlik avı saldırısında kendilerine gönderilen şüpheli bağlantıları açarak müşterilerinizin kurbanı olabileceği tıklama hırsızlığı gibi kullanıcı arabirimi (UI) düzeltme saldırılarını azaltmaya yardımcı olur.
İçerik Güvenliği Politikası frame-ancestors
yönergesi, artık çoğu modern tarayıcı tarafından kullanımdan kaldırılan X-Frame-Options
başlığının yerini başarıyla aldı. Bu ve diğer CSP yönergeleri, WordPress güvenliğinde kesinlikle gereklidir.
İçerik Güvenliği Politikası Yönergeleri
İçerik Güvenliği Politikası, web sitenizin yükleyebileceği içerik kaynaklarını kontrol etmek için yönergeler olarak bilinen bir dizi kural belirlemenize yardımcı olur. İçerik Güvenliği Politikası direktifleri, talep edilen bir web sayfasının HTTP başlığında yer alan ve bir tarayıcının o sayfada yüklemesine izin verilen içerik türlerini ve bunun yüklenebileceği güvenilir kaynakların listesini tanımlayan talimatların bir listesidir.
Mevcut çeşitli İçerik Güvenliği Politikası direktifleri arasında, aşağıdaki kurallar, web sitelerini siteler arası komut dosyası çalıştırma (XSS), tıklama hırsızlığı ve veri enjeksiyon saldırılarından korumak için en yaygın olarak uygulananlardır. Aşağıdaki tüm CSP yönergeleri, frame-ancestors
, form-action
ve upgrade-insecure-requests
dışında içerik yüklenecek kaynakların listesini belirten getirme yönergeleridir. Frame-ancestors
ve form-action
İçerik Güvenliği Politikasının yapılandırıldığı web sitesinin içeriğini diğer kaynakların nasıl kullanabileceğini tanımlayan gezinme yönergeleridir.
-
default-src
belirli bir içerik türü için ek kural belirtilmemişse, tarayıcının varsayılan olarak kullanacağı tüm kaynak türlerinin yüklenmesine yönelik ilkeyi tanımlar. -
script-src
web sitesinden yüklenebilen JavaScript dosyalarının güvenilir kaynaklarını belirtir. -
style-src
geçerli stil sayfaları (CSS) kaynaklarının listesini tanımlar. -
img-src
görüntülerin yüklenebileceği kaynakları beyaz listeye alır. -
media-src
HTML<audio>
ve<video>
öğelerine katıştırılmış ses ve video dosyalarının güvenilir kaynaklarını belirtir. -
connect-src
XMLHttpRequest
,EventSource
veWebSocket
bağlantıları üzerinde kontrol sağlar. -
child-src
bir web sayfasına dahil edilebilecek içerik kaynaklarını çerçeveler aracılığıyla tanımlar. -
frame-ancestors
bir web sitesinin içeriğini çerçevelere yerleştirmesine izin verilen kaynakların listesini belirterek tıklama saldırılarını azaltmaya yardımcı olan bir gezinme yönergesidir. -
form-action
web formlarının bilgi gönderebileceği kaynakları kısıtlayarak saldırgan tarafından kontrol edilen harici kaynaklara veri sızmasını önler. -
upgrade-insecure-requests
tarayıcıya güvenli olmayan tüm istekleriHTTPS
yükseltmesi talimatını vererek güvenli bağlantılar sağlar.
Web sitesinin türüne ve sağladığı belirli işlevselliğe bağlı olarak, web sitesi sahiplerinin harici olarak getirilen tüm içerik kaynaklarını kontrol etmek için birden çok yönergeyi yapılandırması gerekebilir.
İkinci savunma hattı olarak İçerik Güvenliği Politikasını kullanarak çapraz komut dosyası oluşturma ve enjeksiyon saldırılarına karşı yeterli koruma sağlamaya yönelik endüstri standardı, geçerli harici içerik kaynaklarını yalnızca default-src
yönergesi aracılığıyla mevcut web sitesiyle sınırlamaktır. Daha sonra, belirli içerik türleri için kaynakları beyaz listeye almak için daha hedefli yönergeler kullanılabilir, ancak diğer tüm kaynakları reddetmek önerilen yaklaşımdır.
İçerik Güvenliği Politikası Yönergelerini Yapılandırma
Her İçerik Güvenliği Politikası yönergesi, bir Protokol, etki alanı adı, joker karakter veya 'self'
veya 'none'
gibi belirli değerlerin önünde gelen geçerli web adresini içermesi gereken, Tekdüzen Kaynak Bulucu (URL) tarafından temsil edilen bir değerler listesini kabul eder. 'none'
HTTP yanıt başlığı tarafından sağlanır.
Aşağıda, İçerik Güvenliği Politikası yönergelerine atanabilecek bazı değer örnekleri verilmiştir:
Yönerge değeri | Örnek | Tanım |
* | media-src* | Tüm kaynaklardan tüm yükleme içeriğine izin vermek için kullanılan joker karakter. |
'self' | default-src 'self' frame-ancestors 'self'; | Geçerli web sitesini belirli içeriğin tek geçerli kaynağı olarak beyaz listeye ekler. Aynı kaynağın sıkı güvenlik politikasını, önerilen varsayılan İçerik Güvenliği Politikasını tanımlar. Çerçeve-atalar yönergesiyle birlikte kullanıldığında, web sitesinin kendisi dışındaki kaynaklarda içerik çerçevelemesine izin verilmez. |
'none' | media-src 'none' | Aynı web sitesi de dahil olmak üzere herhangi bir kaynaktan kaynak yüklenmesine izin vermez. |
domain.com *.domain.com | img-sr c *.domain.com | domain.com altındaki herhangi bir alt alandan içerik yüklenmesine izin verir. |
https://domain.com | default-src 'https://domain.com' | Belirtilen alan adından yalnızca HTTPS üzerinden içerik alınmasına izin verir. |
Varsayılan olarak, belirtilen kurallardan bağımsız olarak, İçerik Güvenliği Politikası satır içi komut dosyalarının yürütülmesini engelleyecek ve web sayfalarının kötü niyetli bilgisayar korsanları tarafından yaygın olarak kullanılan eval gibi metinden JavaScript'e işlevlerini yürütmesini engelleyecektir. script-src
Content Security Policy yönergesine 'unsafe-inline'
ve 'unsafe-eval'
değerlerinin eklenmesi, web sitesi sahiplerinin kısıtlamaları aşmasına yardımcı olabilir, ancak bu, web sitesini önemli güvenlik risklerine maruz bırakabilir ve diğer yönergeler tarafından uygulanan korumaları zayıflatabilir .
Aşağıdaki İçerik Güvenliği Politikası başlık yapılandırması, web sitesinin harici kaynaklardan içerik yüklemesini etkili bir şekilde engeller ve satır içi komut dosyalarının ve güvenli olmayan JavaScript'in yürütülmesine izin vermez:
Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self'"
'self'
değeri göz önüne alındığında, frame-ancestors yönergesi, içerik çerçevelemesini engelleyerek tıklama saldırılarını azaltır.
İçerik Güvenliği Politikası ve İçerik Dağıtım Ağları (CDN)
Cloudflare gibi içerik dağıtım ağlarının çoğu, İçerik Güvenliği Politikası ile tamamen uyumlu olduğundan ve kaynak sunucudan CPS başlıklarını değiştirmediğinden. Yapılandırdığınız güvenlik kurallarında herhangi bir ek kaynağı beyaz listeye eklemeniz gerekmez.
WordPress için İçerik Güvenliği Politikasını Uygulama
WordPress, teknik olmayan kullanıcılar için iyi bir seçenek olabilecek HTTP yanıt başlıkları eklemek için çeşitli eklentiler sunar. Bu uygun bir seçenek olsa da, WordPress web siteniz için İçerik Güvenliği Politikası gibi güvenlik yanıtı başlıkları ayarlamak, herhangi bir üçüncü taraf yazılımı yüklemenizi gerektirmeyen basit bir işlemdir.
mod_headers
Apache modülü ve ngx_http_headers_module
Nginx modülü, web siteniz için HTTP yanıt başlıklarını yapılandırmanıza izin verir. Nginx kullanıyorsanız, HTTP yanıt başlıklarını yapılandırmak için web sitenizin server {} bloğuna add_header
yönergesini dahil edebilirsiniz.
Benzer şekilde, web sunucunuz olarak Apache kullanıyorsanız, web sitenizin belge kökünde bulunan yerel .htaccess
dosyasındaki güvenlik politikalarını yapılandırmak için “Başlık seti” ve “Başlık ekleme” ifadelerini kullanabilirsiniz. Bu sayede web sitenizin kök dizininde bulunan .htaccess dosyasında belirtilen konfigürasyon sitedeki tüm web sayfalarına uygulanmış olur.
Apache kullanarak HTTP yanıt başlıklarını hem yerel olarak - bir .htaccess
dosyasında - hem de sunucudaki tüm web siteleri için genel olarak yapılandırabileceğinizi unutmamak önemlidir. Özellikle paylaşılan bir barındırma planındaysanız, barındırma sağlayıcınızın belirli yanıt başlıklarını küresel olarak yapılandırması mümkündür. İçerik Güvenliği Politikasını yapılandırmak için "Başlık seti" yöntemini kullanmak, mevcut genel kuralların tamamen üzerine yazarken "Başlık ekleme"yi kullanmak, yapılandırmanın tamamını değiştirmek yerine yeni politikanızı mevcut bir yanıt başlığıyla birleştirecektir.
WordPress web sitenizde sıkı güvenlik kontrolleri uygulamak için aşağıdaki İçerik Güvenliği Politikası yapılandırmasını ekleyebilirsiniz.
Apache için:
Header set Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self';"
Nginx için:
add_header Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self';"
Web sitenizin güvenlik ihtiyaçlarını karşılayacak bir İçerik Güvenliği Politikası yapılandırması üzerinde çalışmak, web sitesinin işlevselliğinin tam olarak anlaşılmasının yanı sıra bazı testler gerektirebilir. Ayrıca, WordPress sitenize yeni güvenlik protokolleri uygulamak potansiyel olarak işlevsellik kaybına neden olabilir, bu nedenle herhangi bir değişikliğin etkisini dikkatle değerlendirmek önemlidir. Güvenlik başlıklarının doğru şekilde yapılandırıldığından ve herhangi bir olumsuz sonuca yol açmayacağından emin olmak için barındırma sağlayıcınıza ulaşabilir veya geliştiricinizle iletişime geçebilirsiniz.
iThemes Security Pro ile Derinlemesine Savunma Uygulayın
Günümüzün tehdit ortamında, derinlemesine bir savunma stratejisi benimsemek çok önemlidir. WordPress gibi modern dinamik web uygulamalarıyla ilgili olarak, İçerik Güvenliği Politikası başlığı, derinlemesine savunmanın merkezinde yer alır ve siteler arası komut dosyası çalıştırma (XSS), dosya dahil etme saldırıları, tıklama hırsızlığı ve diğer web tabanlı saldırılara karşı kritik bir koruma katmanı sağlar.
Kapsamlı bir derinlemesine savunma çözümü uygulamak her zaman zor olmuştur. Ancak sağlam ve güvenilir bir güvenlik eklentisi olan iThemes Security Pro ile WordPress web sitenizi koruyabilirsiniz. Dosya bütünlüğü izleme, güvenlik açığı taraması, otomatik yazılım güncellemeleri ve şifresiz kimlik doğrulama gibi özelliklerle, WordPress web sitenizin tüm kritik bölümlerinin sürekli gelişen güvenlik tehditlerine karşı korunduğundan emin olabilirsiniz.
WordPress'i Korumak ve Korumak için En İyi WordPress Güvenlik Eklentisi
WordPress şu anda tüm web sitelerinin %40'ından fazlasına güç veriyor, bu nedenle kötü niyetli bilgisayar korsanları için kolay bir hedef haline geldi. iThemes Security Pro eklentisi, WordPress web sitenizi güvenli hale getirmeyi ve korumayı kolaylaştırmak için WordPress güvenliğinin varsayımlarını ortadan kaldırır. Bu, WordPress sitenizi sizin için sürekli izleyen ve koruyan tam zamanlı bir güvenlik uzmanına sahip olmak gibidir.
Kiki, bilgi sistemleri yönetimi alanında lisans derecesine ve Linux ve WordPress'te iki yıldan fazla deneyime sahiptir. Şu anda Liquid Web ve Nexcess'te güvenlik uzmanı olarak çalışmaktadır. Bundan önce Kiki, yüzlerce WordPress web sitesi sahibine yardım ettiği ve sıklıkla karşılaştıkları teknik sorunları öğrendiği Liquid Web Yönetimli Barındırma destek ekibinin bir parçasıydı. Yazma tutkusu, bilgi ve deneyimlerini insanlara yardım etmek için paylaşmasına olanak tanıyor. Kiki, teknolojinin yanı sıra uzay hakkında bilgi edinmekten ve gerçek suç podcast'lerini dinlemekten hoşlanıyor.