Content Security Policy (CSP) 2026: XSS Savunma ve Pratik Uygulama
CSP header nedir sorusunun kısa cevabı: Content-Security-Policy, tarayıcıya hangi kaynaktan script, stil, görsel, font ve XHR/fetch yüklenebileceğini bildiren bir HTTP yanıt başlığıdır. 2025 itibarıyla XSS (Cross-Site Scripting) hâlâ OWASP Top 10’da en sık raporlanan ilk üç zafiyet arasında yer alıyor ve HackerOne’ın 2024 raporuna göre platform üzerinde ödüllendirilen tüm zafiyetlerin yaklaşık %20’sini XSS varyantları oluşturuyor. CSP, doğru yapılandırıldığında inline script çalıştırılmasını engelleyerek bu saldırı yüzeyinin büyük kısmını fiilen kapatır. Strict-dynamic + nonce kombinasyonu kullanan bir CSP, klasik reflected/stored XSS payload’larının %95’inden fazlasını tarayıcı seviyesinde reddeder.
Bu yazı; CSP’nin 2026’da neden hâlâ savunma derinliğinin omurgası olduğunu, hangi direktif kombinasyonunun gerçekten koruma sağladığını, hangi yapılandırmaların yalancı güvenlik hissi verdiğini ve report-only modundan production enforce moduna geçişin nasıl kademeli yapılacağını anlatıyor. Senin için hedef: 30 dakika içinde sitenin CSP politikasını yazıp test edebileceğin bir oyun planı.
CSP Nedir, Tarayıcıda Nasıl Çalışır
Content-Security-Policy bir policy enforcement mekanizmasıdır. Sunucu, HTTP yanıtının başlığına bir politika yerleştirir; tarayıcı bu politikayı parse eder ve sayfa içindeki her kaynak isteğini (script, img, frame, fetch, font, stylesheet, manifest) bu kurallara karşı denetler. Politikaya uymayan kaynak yüklenmez; istenirse bir report-uri veya report-to uç noktasına JSON raporu gönderilir.
CSP, sunucu tarafında çalışan bir WAF değildir; istemci tarafı bir savunma katmanıdır. Saldırgan kötü amaçlı script’i HTML’e enjekte etmeyi başarsa bile tarayıcı, politikada izin verilmeyen kaynaktan script yüklemeyi veya inline script çalıştırmayı reddeder. Bu nedenle OWASP Top 10 savunmasında girdiyi temizleme (sanitization) ve çıktıyı kodlama (output encoding) ile birlikte üçüncü katman olarak konumlandırılır.
CSP iki taşıma yöntemiyle uygulanır: HTTP Content-Security-Policy başlığı veya HTML içindeki etiketi. HTTP başlığı daha güçlüdür çünkü frame-ancestors, report-uri, sandbox gibi direktifler meta etiketle çalışmaz. MDN’in CSP referansı hangi direktifin hangi taşıyıcıyla geçerli olduğunu listeler.

XSS Tehdit Manzarası ve CSP’nin Yeri
XSS üç ana türde gelir: reflected (URL parametresi üzerinden anlık), stored (veritabanına yazılıp her ziyarette çalışan), DOM-based (sunucuya hiç uğramadan tarayıcıda JavaScript ile tetiklenen). 2024 OWASP raporlarında DOM-based XSS oranı modern SPA mimarilerinin yaygınlaşmasıyla %35’lere ulaştı. Geleneksel WAF’lar DOM-based saldırıları büyük oranda kaçırır çünkü payload sunucudan geçmez.
CSP burada devreye girer. script-src 'self' 'nonce-{rastgele}' tanımlı bir politikada saldırgan HTML’e enjekte etse bile bu script’in geçerli bir nonce’u olmadığı için tarayıcı çalıştırmaz. Google’ın 2024 mühendislik blogunda paylaştığı verilere göre Gmail, YouTube ve Google Search’ün strict CSP’ye geçişi sonrası bu yüzeylerdeki XSS rapor sayısı yaklaşık %85 düştü.
Ancak CSP “yazıp unutulacak” bir başlık değildir. Yanlış yapılandırılan bir politika—örneğin script-src * 'unsafe-inline' 'unsafe-eval'—hiç CSP olmamasından farksızdır ve tarayıcı sekmesinde yeşil tik gösteren bir “güvenlik tiyatrosu” yaratır.
| XSS Türü | Saldırı Vektörü | CSP Etkinliği | Ek Savunma |
|---|---|---|---|
| Reflected | URL query/path param | Yüksek (nonce + strict-dynamic) | Output encoding |
| Stored | DB’den render edilen HTML | Yüksek (script-src ‘self’ yetersiz, nonce şart) | HTML sanitization (DOMPurify) |
| DOM-based | İstemci JS innerHTML/eval | Orta (Trusted Types ile yüksek) | Trusted Types API |
| Mutation XSS | Tarayıcı parser farkları | Yüksek (inline yasaklı) | Modern sanitizer kütüphaneleri |
| Self XSS | Sosyal mühendislikle konsola yapıştırma | Düşük (CSP konsolu engellemez) | Kullanıcı uyarısı, DevTools warning |
CSP Direktiflerinin Tam Anatomisi
CSP politikası noktalı virgülle ayrılmış direktif listesidir. Her direktif bir kaynak tipi için izinli kaynakları belirtir. W3C CSP Level 3 spesifikasyonu direktiflerin tamamını ve hangi keyword’ün hangi davranışı tetiklediğini tanımlar.
- default-src: Diğer direktifler tanımlı değilse fallback. Genellikle
'self'ile başlanır. - script-src: JavaScript kaynakları. CSP’nin XSS savunmasının kalbi.
- style-src: CSS kaynakları. Inline style attribute saldırı yüzeyi düşük ama mevcuttur.
- img-src: Görsel kaynakları. Tracking pixel ve veri sızıntısı vektörleri için önemli.
- connect-src: fetch, XHR, WebSocket, EventSource hedefleri.
- frame-ancestors: Sayfanın hangi origin’lere iframe edilebileceği. X-Frame-Options’ın modern halefi.
- form-action: Form gönderimlerinin hangi origin’e gidebileceği. Phishing redirect savunması.
- base-uri:
etiketiyle göreceli URL manipülasyonunu engeller;'none'öneririm. - object-src: Flash/Java applet dönemi kalıntısı; her zaman
'none'olmalı. - upgrade-insecure-requests: HTTP kaynakları otomatik HTTPS’e yükseltir; karışık içerik temizliği.
Modern strict CSP için anahtar keyword’ler şunlardır:
- ‘self’: Yalnız aynı origin’den kaynak yükle.
- ‘nonce-{base64}’: Her istek için sunucu tarafında üretilen rastgele token. Yalnız bu nonce ile işaretli inline script çalışır.
- ‘sha256-{hash}’: Belirli bir inline bloğun hash’i. Sabit script’ler için kullanışlı.
- ‘strict-dynamic’: Nonce ile güvenilir bir script’in dinamik olarak yüklediği alt-script’lere de güven. Modern SPA’lar için kritik.
- ‘unsafe-inline’: İnline script/style izinli. Strict politikada YASAK; ancak nonce/hash varsa geri uyumluluk için yok sayılır.
- ‘unsafe-eval’:
eval(),Function(),setTimeout(string)izinli. Kaçınılmalı.
Strict CSP: 2026’nın Önerilen Profili
Google’ın web.dev strict CSP rehberi Chrome ekibinin de imzasını taşıyan, geniş ekosistemde benimsenmiş referans şablondur. Şablonun özü: kaynak whitelist’i (allowlist) yerine nonce-based bir güven modeli kurmak. Çünkü 2016 Google araştırması (Weichselbaum ve diğ., “CSP Is Dead, Long Live CSP!”) taranan 1.6 milyon CSP politikasının %95’inin host whitelist’i nedeniyle bypass edilebildiğini gösterdi.
Önerilen strict CSP şablonu:
| Direktif | Değer | Amaç |
|---|---|---|
| default-src | ‘self’ | Tanımsız kaynaklar için güvenli fallback |
| script-src | ‘nonce-{rnd}’ ‘strict-dynamic’ https: ‘unsafe-inline’ | Modern + geri uyumlu güven zinciri |
| object-src | ‘none’ | Flash/Java applet vektörü kapalı |
| base-uri | ‘none’ | |
| frame-ancestors | ‘none’ veya ‘self’ | Clickjacking koruması |
| form-action | ‘self’ | Form hijacking koruması |
| require-trusted-types-for | ‘script’ | DOM XSS API güvencesi |
| report-to | csp-endpoint | İhlal telemetrisi |
Bu şablonda iki ince ayrıntı vardır. Birincisi https: ve 'unsafe-inline' CSP3 destekli tarayıcılarda görmezden gelinir; sadece CSP1/CSP2 destekleyen eski tarayıcılar için geri uyumluluk amaçlıdır. İkincisi 'strict-dynamic' sayesinde nonce’lu güvenilir bir loader script’in document.createElement('script') ile yüklediği script’lere de aynı güven yansır—webpack, Vite, Next.js gibi modern bundler’ların çalışması için bu kritiktir.
Nonce, Hash ve Strict-Dynamic Pratik Kullanımı
Nonce her HTTP yanıtında YENİDEN üretilmelidir. Aynı nonce’u tekrar kullanmak veya sayfada öngörülebilir bir değer (UUID dışı bir patern) yerleştirmek tüm savunmayı çürütür. Minimum 128 bit entropi (16 random byte → base64) standardıdır.
Express.js’te basit bir nonce middleware:
- Üretim:
crypto.randomBytes(16).toString('base64')ile her istekte yeni nonce. - Header injection:
res.setHeader('Content-Security-Policy', "script-src 'nonce-" + nonce + "' 'strict-dynamic'"). - Template paslaması: Nonce’u render context’ine geç, EJS/Handlebars/Pug ile
olarak yaz. - Cache uyarısı: Nonce’lu sayfaları CDN’de cache’leme—aksi halde tüm kullanıcılar aynı nonce’u alır ve saldırgan da öğrenir.
Hash tabanlı kullanım statik inline bloklar için uygundur. sha256-{base64} hesaplaması: SHA-256(script içeriği) → base64. content-security-policy.com hash hesaplayıcısı hızlı bir araç sunar. WordPress, Drupal gibi CMS’lerde tema şablonu sabit bir inline analytics snippet’i içeriyorsa hash daha pratiktir.

Report-Only Modu ile Kademeli Geçiş
Mevcut bir üretim sitesine doğrudan enforcing CSP koymak büyük olasılıkla sayfayı kırar—üçüncü taraf widget’ları (chat, analytics, A/B test, reklam), inline event handler’lar (onclick=""), eski tema dosyaları. Tek doğru yol: Content-Security-Policy-Report-Only başlığıyla başlamak.
Report-only modu politikayı ZORLAMAZ; sadece ihlalleri raporlar. Bu sayede iki haftadan başlayarak gerçek trafiğin politikayı nasıl etkileyeceğini ölçer, beyaz liste eklemen gerekecek üçüncü taraf kaynakları görür ve enforce’a güvenle geçersin. DevSecOps shift-left pratiğinde bu süreci CI’a entegre eden ekipler vardır: staging deploy → 24 saat report-only → ihlal eşiğinin altındaysa production enforce.
Tipik geçiş zaman çizelgesi:
| Hafta | Aşama | Header | Hedef |
|---|---|---|---|
| 1-2 | Audit | Yok | Tüm script/style kaynaklarını envanterle |
| 3-4 | Report-Only Geniş | CSP-Report-Only: default-src *; script-src * ‘unsafe-inline’ | Baseline rapor akışını test et |
| 5-6 | Report-Only Sıkı | CSP-Report-Only: strict şablon | Gerçek ihlalleri topla |
| 7-8 | Karma | İki başlık birlikte: sıkı enforce + daha sıkı report-only | Üretimde enforce, bir sonraki sertleştirmeyi raporla |
| 9+ | Sürekli iyileştirme | Tek enforce başlık | Aylık ihlal review, beyaz liste budama |
Report endpoint’i için kendi sunucunda bir JSON alıcı yazabilir veya yönetilen bir servis kullanabilirsin. Yönetilen seçenekler:
- report-uri.com: Aylık 10.000 ücretsiz rapor, sonrası tahmini 9-25 USD aralığında. Kurulumu basit, dashboard’u iyi.
- Sentry: Hata izleme platformunun CSP raporlama özelliği. Mevcut Sentry kullanıyorsan ek maliyet yok.
- Datadog/New Relic: APM aboneliği içinde CSP report endpoint’i sunar; özel parser ile zenginleştirilebilir.
- Self-hosted: Basit bir POST endpoint + Elasticsearch/Loki + Grafana. Maliyet sıfır, bakım orta.
Trusted Types: DOM-Based XSS’in Kapatılması
Klasik CSP’nin zayıf olduğu nokta DOM-based XSS’tir. element.innerHTML = userInput gibi bir kod inline script çalıştırmasa bile DOM ağacına saldırgan kontrollü HTML enjekte eder; ardından tetiklenir. Standart CSP bunu engellemez çünkü script “kod” değil “veri” olarak gelir.
Trusted Types API bu boşluğu kapatır. require-trusted-types-for 'script' direktifi etkinleştirildiğinde, innerHTML, document.write, eval gibi sink fonksiyonlarına yalnız önceden tanımlı bir politika tarafından üretilmiş TrustedHTML, TrustedScript, TrustedScriptURL tipleri geçebilir. Düz string atamak runtime hatası fırlatır. Chrome 83+ ve Edge’de destekli; Firefox 2025’te kısmi destek devraldı. SAST/DAST analizleri Trusted Types ihlallerini build aşamasında yakalamak için yapılandırılabilir.
Trusted Types adapter politika örneği:
- Adım 1:
trustedTypes.createPolicy('default', {createHTML: input => DOMPurify.sanitize(input)})ile global default policy tanımla. - Adım 2: Üçüncü taraf kütüphaneler için (jQuery, React legacy) named policy’ler oluştur:
trustedTypes.createPolicy('react-html', {...}). - Adım 3: Report-only modda dağıt,
require-trusted-types-for-report-only 'script'. - Adım 4: Raporlar temizlendiğinde enforce moda geç.
Yaygın CSP Bypass Senaryoları ve Karşı Önlemler
“CSP koyduk, bitti” yanılgısı tehlikelidir. Bilinen bypass desenleri politikanın olgunluğunu test eder.

| Bypass Türü | Mekanizma | Karşı Önlem |
|---|---|---|
| JSONP Endpoint | script-src whitelist’inde JSONP destekli host varsa saldırgan callback parametresiyle keyfi JS çalıştırır | Whitelist yerine nonce; JSONP endpoint’leri ayrı alt-domain’e taşı |
| Angular/Vue Template Injection | Eski Angular sürümlerinde {{constructor.constructor('alert(1)')()}} sandbox bypass | Framework güncel tut; ‘unsafe-eval’ yasakla |
| Open Redirect + Reflected | script-src ‘self’ altında bir open redirect endpoint script kaynağı olur | form-action ‘self’; open redirect endpoint’lerini düzelt |
| Base Tag Injection | Saldırgan enjekte ederek tüm göreceli URL’leri kendi sunucusuna yönlendirir | base-uri 'none' |
| iframe srcdoc | frame-src tanımlı değilse iframe srcdoc içinde CSP geçersiz olabilir | frame-src ‘self’; child-context için ayrı politika |
| Service Worker | Saldırgan service worker register ederse tüm istekleri kontrol eder | worker-src ‘self’ |
| CDN Aynı Hostta | script-src whitelist’te CDN varsa CDN üzerindeki keyfi dosya script olur | CDN’i ayrı subdomain, SRI ekle |
Penetrasyon testlerinde bu bypass’lar standart checklist’tir. Sızma testi kapsamında CSP Evaluator (csp-evaluator.withgoogle.com) ve Google’ın açık kaynak CSP Evaluator’ı politikayı otomatik tarar, kritik zayıflıkları işaretler.
Framework Spesifik Uygulama: WordPress, Next.js, Laravel
Üç popüler stack’te CSP entegrasyonunun pratik notları:
WordPress: wp_head ve wp_footer içindeki çok sayıda inline script (admin bar, jQuery initializers, plugin’ler) nedeniyle pure-nonce CSP zorlayıcıdır. Yaklaşım: ana site (ön yüz) için strict CSP, /wp-admin/ için daha gevşek profil. Pratikte hash tabanlı bir politika veya WordPress’in yeni wp_enqueue_script filter’larıyla nonce paslama tercih edilir. Çoğu güvenlik plugin’i (Wordfence, iThemes) CSP yönetimi sunmaz; özel mu-plugin önerilir.
Next.js: 13+ sürümlerde middleware veya next.config.js headers() ile başlık enjeksiyonu doğal. Nonce üretimi için NextResponse.next() içinde crypto.randomUUID() + base64. React 18 streaming SSR ile nonce’u her render’da yeniden eşler. Next.js resmi CSP dokümanı bunu örnekleriyle anlatır.
Laravel: spatie/laravel-csp paketi yaygın çözümdür. Middleware tabanlı, profil temelli (Basic, Strict, Local), report endpoint built-in. Tahmini 1-2 saatte üretime hazır. Ek olarak Laravel’in built-in @csrf direktifiyle uyumludur.
Ömer Önal olarak müşteri projelerinde gördüğüm en sık hata: report endpoint kurulduktan sonra raporların incelenmemesi. Endpoint sadece veri toplar; ihlal trendlerini haftalık bir runbook ile incelemek, gerçek koruma ile teatral koruma arasındaki farkı belirler. Bu süreç için kısa bir danışmanlık paketiyle baseline policy + monitoring + ilk 30 günlük iyileştirme önerilir.
Performans Etkisi ve CDN Uyumluluğu
CSP başlığı her HTTP yanıtına eklenir; tipik strict politika 250-450 byte arasındadır. HTTP/2 ve HTTP/3’te başlık sıkıştırma (HPACK/QPACK) sayesinde tekrar maliyeti minimumdur. Tarayıcı tarafında parse maliyeti mikrosaniyeler seviyesindedir; gerçek ölçümlerde sayfa yükleme süresine ortalama 1-3 ms etki gözlenir.
| Politika Boyutu | Yanıt Overhead | Parse Süresi (Chrome 121) | Cache Etkisi |
|---|---|---|---|
| ~150 byte (minimal) | 0.1% HTML | <0.5 ms | Yok |
| ~350 byte (orta) | 0.3% HTML | ~1 ms | Yok |
| ~800 byte (yüksek) | 0.7% HTML | ~2 ms | Nonce varsa CDN cache iptal |
| ~1500 byte (aşırı) | 1.3% HTML | ~4 ms | Yeniden çalışma maliyeti |
CDN uyumluluğunda kritik kural: nonce kullanılan sayfalar cache’lenmemelidir. Statik sayfalar için hash tabanlı CSP, dinamik sayfalar için nonce + private cache. Cloudflare Workers, Fastly Compute, AWS Lambda@Edge ile edge’de nonce enjeksiyonu mümkündür—böylece origin’e dokunmadan her isteğe taze nonce yazılabilir. Cloudflare WAF ile CSP’yi Transform Rules üzerinden eklemek mümkündür ama nonce için Workers gerekir.
Pratik gözlem: Cloudflare Workers’da nonce üretimi ortalama 0.3 ms ek latency ekler ve free plan günlük 100.000 istek limitiyle küçük-orta ölçekli siteler için maliyetsiz çalışır. Paid plan tahmini 5 USD/ay civarında başlar ve milyon istek başına 0.50 USD ek ücret ile büyüklenebilir. Origin’de nonce üretimine kıyasla CDN-level çözümün avantajı kaynak (CPU) tüketimini origin’den uzaklaştırması ve cache hit oranını korumasıdır—yalnız HTML belgesi nonce’lu, varlık (asset) dosyaları (resim, font, CSS bundle) tam CDN cache’lenmeye devam eder.
Performans karar çerçevesi için üç senaryo:
- Statik blog/dökümantasyon: Hash tabanlı CSP yeterli, nonce gereksiz. Tüm sayfa CDN cache. Tahmini ek latency: 0 ms.
- Authenticated SaaS panel: Nonce + private cache (Cache-Control: private). Edge worker’da nonce enjeksiyonu önerilir. Tahmini ek latency: 1-2 ms.
- E-ticaret + üçüncü taraf payment widget: Sayfaya özel hibrit politika (ödeme sayfasında strict, ürün listesinde standart). Tahmini ek latency: 2-4 ms ama PCI-DSS uyumu için zorunlu yaklaşım.

İlgili Başlıklar ve Tamamlayıcı Header’lar
CSP tek başına yeterli değildir; tarayıcı güvenlik başlığı ekosisteminin bir üyesidir. OWASP Secure Headers Project tam listeyi sürdürür.
- Strict-Transport-Security: HTTPS zorunluluğu, downgrade saldırı koruması.
max-age=63072000; includeSubDomains; preload. - X-Content-Type-Options:
nosniff— MIME type sniffing kapalı, JS olmayan dosyaların JS olarak çalıştırılmasını engeller. - Referrer-Policy:
strict-origin-when-cross-origin— Referrer sızıntısını sınırlar. - Permissions-Policy: Tarayıcı API erişimini (geolocation, camera, microphone) kısıtlar.
- Cross-Origin-Opener-Policy:
same-origin— Spectre sınıfı yan kanal saldırı koruması. - Cross-Origin-Embed-Policy:
require-corp— SharedArrayBuffer için gerekli izolasyon. - X-Frame-Options: Eski tarayıcılar için frame-ancestors fallback’i.
Sık Sorulan Sorular (SSS)
CSP koymak siteyi yavaşlatır mı?
Hayır, anlamlı bir yavaşlama yaratmaz. Tipik strict CSP 250-450 byte ek başlıktır, HTTP/2 sıkıştırması altında neredeyse maliyetsizdir. Tarayıcı parse süresi 1-3 ms aralığındadır. Asıl performans etkisi nonce kullanımıyla CDN cache invalidation yapıldığında ortaya çıkar; bunu edge worker’larla nonce enjeksiyonu yaparak çözebilirsin.
‘unsafe-inline’ kullanmak ne kadar tehlikeli?
Strict CSP açısından tüm savunmayı çürütür. Inline script çalıştırmaya izin verdiğin an saldırganın enjekte ettiği bloğu ile sizin meşru inline kodunuz aynı güvene sahip olur. Eski kod tabanı için geçici tolerans verilebilir ama ‘nonce’ veya ‘sha256’ hash tabanlı CSP’ye geçiş yol haritasına yazılmalıdır. CSP3 destekli tarayıcılarda nonce varlığı ‘unsafe-inline’ı zaten yok sayar; bu sayede hibrit geçiş mümkündür.
Tüm sayfalara aynı CSP politikası mı uygulanmalı?
Hayır, tek beden tüm sayfalara uymaz. Ön yüz için strict, admin paneli için biraz daha gevşek, ödeme akışı için ultra-strict (form-action sıkı, frame-ancestors ‘none’) gibi profil ayrımı önerilir. Üçüncü taraf widget (chat, analytics) sayfada varsa o sayfanın CSP’sini ayrı tut. Header’ı her route için orta katmanda dinamik üretmek doğru pratiktir.
CSP rapor endpoint’i ne kadar veri toplar?
Trafik ve politika sıkılığına bağlıdır. Aylık 100k ziyaretçi alan orta ölçekli bir sitede strict report-only mod ilk hafta tahmini 50-200k rapor üretebilir; politika olgunlaştıkça günde 100 altına düşer. report-to header’ı ile Reporting API kullanırsan tarayıcı batch’leme yaparak istek sayısını azaltır. Endpoint’i 4xx/5xx ile koru, rate limit uygula.
CSP, SRI (Subresource Integrity) yerine geçer mi?
Hayır, ikisi farklı problemleri çözer. CSP hangi kaynaktan yükleyebileceğini söyler; SRI yüklenen dosyanın değişmediğini doğrular (hash kontrolü). Bir CDN’in compromise edildiği senaryoda CSP “evet bu CDN izinli” der ama SRI hash uyuşmazlığı yakalar. require-sri-for direktifi CSP içinde SRI’ı zorunlu tutar; üçüncü taraf script’lerde mutlaka birlikte kullanın.
Sonuç
CSP, modern web savunmasının yazılım katmanında en ucuz ve en yüksek geri dönüşlü güvenlik kontrolüdür. Doğru yapılandırılmış bir nonce + strict-dynamic politikası, XSS saldırı yüzeyinin büyük çoğunluğunu tarayıcı seviyesinde kapatır; report-to telemetrisi sayesinde gerçek saldırı denemelerini gözlemleme yeteneği kazandırır; Trusted Types ile DOM-based XSS’in son cebini de kapatır.
Karar çerçevesi şudur: yeni bir proje başlatıyorsan birinci günden strict CSP ile başla, geriye dönük tavizler verme. Mevcut bir sistemi sertleştiriyorsan iki haftalık report-only audit ile başla, üç-dört haftada enforce’a geç, sonra Trusted Types’a ilerle. Üçüncü taraf bir SaaS kullanıyorsan vendor’dan CSP uyumluluk dokümanı iste—bu artık 2026’da makul beklentidir.
Hızlı başlangıç için ekipler genelde üç dosyaya ihtiyaç duyar: politika üreten middleware, report endpoint, haftalık ihlal raporu runbook’u. Bu üçlüyü doğru kurmak için iletişime geçebilirsin—mevcut sitenin baseline CSP’sini çıkarıp 30 günlük sertleştirme planı paylaşıyorum.










Ömer ÖNAL
Mayıs 16, 2026Kurumsal güvenlik denetimlerinde sıkça karşılaştığım bir gerçek: zayıflıkların %60’ından fazlası bilinen ama yamanmamış component’lerden geliyor. Bu konuda denetim süreçlerinizi nasıl yönetiyorsunuz? Yorumlara yazabilirsiniz.