Yazar, bir CTF yarışmasında XSS zafiyeti bulmasına rağmen Content Security Policy (CSP) nedeniyle payload'ının engellenmesiyle CSP'nin önemini fark etti. Bu deneyim, sızma testçilerinin genellikle göz ardı ettiği bu güvenlik başlığının detaylarını inceleme ihtiyacını doğurdu. Makale, CSP'nin nasıl çalıştığını ve yaygın yapılandırma hatalarını ele alarak, bu güvenlik mekanizmasının web uygulamalarındaki rolünü ve potansiyel zayıflıklarını açıklıyor.
CSP, bir web sunucusunun tarayıcıya hangi kaynaklardan (betikler, stil sayfaları, görseller vb.) içerik yükleyebileceğini bildiren bir güvenlik mekanizmasıdır. Sunucu, bir "politika" gönderir ve tarayıcı, bu politikaya uymayan herhangi bir kaynağı engeller. Örneğin, sunucu yalnızca kendi alan adından betiklere izin veriyorsa, kötü niyetli bir harici betik yüklenmeye çalışıldığında tarayıcı bunu durdurur ve bir CSP ihlali bildirimi gösterir. Teoride etkili olsa da, doğru yapılandırması oldukça karmaşıktır ve tek bir yanlış yönerge tüm sistemi zayıflatabilir.
CSP, farklı kaynak türleri için ayrı kurallar olan "direktifler" aracılığıyla işler. Örneğin, script-src 'self' https://trusted.com; style-src 'self' direktifi, betiklerin kendi alan adından veya trusted.com'dan, stil dosyalarının ise yalnızca kendi alan adından gelmesine izin verir. Bir direktif belirtilmezse, default-src direktifine geri dönülür. Eğer default-src de yoksa, hiçbir kısıtlama uygulanmaz ki bu da büyük bir güvenlik açığıdır. Sızma testçileri için en kritik direktif script-src'dir, çünkü bunu atlatmak kod çalıştırma anlamına gelir. default-src 'self' ise tüm kaynak türleri için kendi alan adını varsayılan olarak belirleyerek oldukça kısıtlayıcı bir politika oluşturur.
CSP, web uygulamalarının güvenliğini artırmak için kritik bir mekanizma olup, doğru yapılandırılmadığında veya atlatıldığında ciddi güvenlik zafiyetlerine yol açabilir.