← Tüm yazılar

Subresource Integrity (SRI) Nedir? CDN'den Yüklenen Kodun Güvenliği

16 Eylül 2026

Subresource Integrity (SRI) Nedir? CDN'den Yüklenen Kodun Güvenliği

Modern web siteleri, JavaScript ve CSS’lerinin bir kısmını üçüncü taraf kaynaklardan (CDN’ler, analitik, widget’lar) yükler. Bu pratik bir kolaylıktır ama bir güven varsayımı içerir: “o kaynaktan gelen dosya, beklediğim dosyadır.” Eğer o CDN veya üçüncü taraf ele geçirilirse, sitenize sizin farkınız olmadan kötü amaçlı kod enjekte edilebilir. Subresource Integrity (SRI) tam olarak bu varsayımı kriptografik bir garantiyle değiştirir.

Problem: tedarik zinciri riski

Bir <script src="https://cdn.example/kutuphane.js"> etiketi eklediğinizde, tarayıcı o adresteki dosyanın içeriğini sorgusuz çalıştırır. Saldırgan CDN’i ele geçirir veya araya girerse, dosyanın içeriğini değiştirip her ziyaretçinin tarayıcısında kod çalıştırabilir. Bu, sizin sunucunuzda bir zafiyet olmasa bile gerçekleşebilir — risk tedarik zincirindedir.

Çözüm: SRI hash’i

SRI, etikete beklenen dosyanın kriptografik özetini (hash) eklemenizi sağlar. Tarayıcı dosyayı indirir, özetini hesaplar ve sizin verdiğinizle karşılaştırır; eşleşmezse dosyayı çalıştırmaz.

<script src="https://cdn.example/kutuphane.js"
        integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
        crossorigin="anonymous"></script>
  • integrity: sha384- (veya sha256/sha512) önekiyle dosyanın base64 kodlu özeti.
  • crossorigin="anonymous": Çapraz kaynak dosyalarda SRI doğrulamasının çalışması için gereklidir.

Dosya birebir beklediğiniz sürüm değilse tarayıcı yüklemeyi reddeder; ele geçirilmiş bir CDN’in enjekte ettiği değiştirilmiş dosya çalışmaz.

Nasıl uygulanır?

  1. Özeti üretin. Yüklediğiniz dosyanın SHA-384 özetini alın (birçok CDN hazır SRI etiketi sunar; komut satırından da üretilebilir).
  2. Sabit sürüm kullanın. SRI, dosya içeriğine bağlıdır; “latest” gibi değişken bir sürüme SRI koyarsanız, sağlayıcı dosyayı meşru biçimde güncellediğinde site kırılır. Sabit bir sürüme sabitleyin.
  3. Kritik üçüncü taraf betiklerine önceliklendirin. Özellikle ödeme, kimlik ve yaygın kütüphaneler.

Sınırları

SRI güçlü ama her şeyi çözmez:

  • Dinamik olarak değişen üçüncü taraf betikleri (kişiselleştirilmiş reklam/analitik) için SRI pratik olmayabilir; içerik her seferinde farklıdır.
  • SRI, betiğin kendi meşru davranışını denetlemez; yalnız beklediğiniz dosyanın yüklendiğini garanti eder. Üçüncü tarafa duyulan güven yine de bir karardır.

Özet

SRI, üçüncü taraf koda olan “gelen dosya beklediğim dosyadır” varsayımını kriptografik bir doğrulamaya çevirir. Sabit sürümlü, kritik CDN betiklerine integrity + crossorigin ekleyerek, ele geçirilmiş bir tedarik zincirinin sitenize kod enjekte etmesini büyük ölçüde engellersiniz.

Kaynaklar: MDN: Subresource Integrity, W3C SRI.

Sitenizin yüklediği üçüncü taraf betiklerini ve eksik SRI/güvenlik başlıklarını CyberTestify’ın dış yüzey taraması görünür kılar.