Yayınlanma tarihi: 17 Kasım 2025
Chrome 141'den itibaren, Chrome'un kullanıma sunduğu yeni içerik güvenliği politikası (CSP) özelliklerini test etmek için kaynak denemesine katılabilirsiniz. Bu özellikler, bilinen JavaScript kaynaklarını daha iyi izin listesine ekleyerek web sitelerinin kendilerini XSS'e karşı korumasına yardımcı olur. Bilinen JavaScript'lerin izin verilenler listesine eklenmesi ve diğer tüm kaynakların engellenmesi, XSS'yi önlemenin etkili bir yoludur. Saldırgan tarafından yerleştirilen JavaScript, izin verilenler listesinde yer almadığı için engellenir.
Bu özellikler olmadan, komut dosyası ana makinesi ile site arasında nonce iletişim mekanizması olmadan veya komut dosyasının tam karma değerini önceden bilmeden tüm JavaScript kaynaklarının izin verilenler listesine alındığı "katı" bir içerik güvenliği politikası oluşturmak zordur. Komut dosyası hem sık sık değişiyorsa hem de güvenilir ancak ayrı bir üçüncü tarafça barındırılıyorsa bu yöntemlerin ikisinin de dağıtılması zordur. Ayrıca, herhangi bir komut dosyasının eval kullanması gerekiyorsa CSP şu anda eval'i tüm komut dosyaları için izin verilenler listesine eklemenizi gerektiriyor ve bu da CSP'yi çok daha zayıf hale getiriyor.
script-src'da URL tabanlı komut dosyası izin listesi oluşturmak için daha güçlü bir mekanizma ve eval çağrılarına izin vermek için bir mekanizma sağlayarak bu boşluğu gidermeye çalışıyoruz. Belirli komut dosyalarının URL'lerinin ve eval'e (ve diğer eval benzeri işlevlere) iletilen JavaScript'in izin verilenler listesine eklenmesine olanak tanımak için script-src'daki mevcut karma mekanizmasını kullanabilirsiniz. URL tabanlı izin verilenler listesi, bütünlük tabanlı İGP kadar katı olmasa da bu mekanizma, mevcut ana makine adı izin verilenler listesinde büyük bir iyileştirme sağlayacaktır.
Bu politikanın, izin verilmeyen satır içi ve eval komut dosyalarını engelleyerek XSS'yi güçlü bir şekilde azaltmaya devam ederken daha kolay dağıtılabilen bir CSP politikası sağladığını düşünüyoruz. Bu yeni özellikler, kullanıcı aracısı koklama işlemi yapmadan, yeni işlevselliği desteklemeyen tarayıcılarda bozulmaya veya güvenlik gerilemesine neden olmadan, sitelerin yeni işlevselliği destekleyen tarayıcılarda daha iyi güvenlik sağlayan bir politika belirlemesini sağlamak için dikkatlice tasarlanıp uygulanmıştır.
Kullanım alanları
script-src ile kullanılacak belirli URL'leri izin verilenler listesine ekleme
script-src ile kullanılmak üzere belirli komut dosyalarının izin verilenler listesine eklenmesine izin vermek isteyen sitelerin şu anda iki seçeneği vardır: alt kaynak bütünlüğü (SRI) aracılığıyla komut dosyası içeriklerinin izin verilenler listesine eklenmesine izin vermek veya ana makine adlarının izin verilenler listesine eklenmesine izin vermek için host-source kullanmak. SRI, sık değişen komut dosyaları (örneğin, analiz komut dosyaları) için genellikle pratik değildir. strict-dynamic da ayarlandığında host-source belirtimi yoksayılır ve URL parametrelerini içermediğinden kapsamlı bir koruma değildir. Bu değişiklik, (tam) URL'lerinin karma değerini kullanan komut dosyalarının izin verilenler listesine eklenmesine olanak tanıyacak ve hem dinamik komut dosyalarını hem de strict-dynamic kullanan yapılandırmaları destekleyecektir.
Değerlendirme veya değerlendirme benzeri işlevlerle kullanılmak üzere belirli komut dosyalarına izin verme
Bazı siteler, eval veya eval benzeri işlevlerin (kodu setTimeout, setInterval ve setImmediate içinde dize değişmezleri olarak iletme) kullanılmasını gerektirir. Bu siteler için kullanılabilen tek CSP seçeneği, eval'e yapılan tüm çağrıları etkinleştiren unsafe-eval'dir. Değerlendirme için belirli girişlerin izin verilenler listesine eklenmesine olanak tanıyan bir mekanizma ekliyoruz. Bu yeni mekanizma, komut dosyası içeriklerini doğrudan karma oluşturarak, komut dosyası içeriği karma oluşturma yerine, çok geniş bir unsafe-eval İGP sağlamaya zorlanmadan, yalnızca gereken belirli komut dosyalarının dar bir şekilde beyaz listeye alınmasına izin verir.
Başlayın
Komut dosyası ve eval karma oluşturma desteğini denemek için Chrome 141'den 144'e kadar sürecek olan
URL ve eval karmaları script-src kaynak denemesine katılın.
script-src tablosuna karma ekleme
URL'ler, url-<hash-algorithm>-<script-url-hash> biçiminde script-src CSP yönergesine bir değer eklenerek izin verilenler listesine alınır. Bu, URL'nin sunduğu içeriğin türüne bakılmaksızın yürütülmesine izin verir. Karma yalnızca ilk URL'yi (sayfada bulunan URL) içermeli, bu URL'nin yönlendirdiği URL'leri içermemelidir. Hem mutlak hem de göreli URL'ler desteklenir.
Örneğin, aşağıdaki CSP başlığı, https://example.com/example.js adresinde sunulan komut dosyasını izin verilenler listesine ekler:
Content-Security-Policy: script-src 'sha256-u2cYltM/2wbvoRR0jMZ57KmFdVqqdPYa6GtdykFwBGc=';
Burada 'sha256-u2cYltM/2wbvoRR0jMZ57KmFdVqqdPYa6GtdykFwBGc=', "https://example.com/example.js"nin SHA256 karmasıdır.
eval veya new Function üzerinden değerlendirilen komut dosyaları, komut dosyası src'sine eval-<hash-algorithm>-<script-contents-hash> eklenerek izin verilenler listesine eklenebilir. Örneğin, aşağıdaki İGP başlığı, alert("hello world") dizesinin eval()'ye iletilmesine izin verir:
Content-Security-Policy: script-src 'eval-sha256-4vpsisrBP00v+tF/SsQ3RXWWYF28JSvTpR9D/wrxn/0=';
Burada 'eval-sha256-4vpsisrBP00v+tF/SsQ3RXWWYF28JSvTpR9D/wrxn/0=', alert("hello world") öğesinin sha256 karma değeridir.
Kullanımın hızla artmasına yardımcı olmak için bir site kaynak denemesini etkinleştirdiğinde hem URL'ler hem de eval için karma değerler, geliştirici araçları konsoluna yazdırılır ve CSP raporlarına dahil edilir. Bu nedenle, beyaz listeye ekleme için gereken tüm karma değerleri listelemek üzere katı ancak report-only bir politika kullanılabilir.
Geriye dönük uyumluluğu koruma
Tüm tarayıcılar destek eklemeden önce bu politikaların dağıtımına izin vermek için URL karmaları, ana makine tabanlı izin verilenler listelerinden sonra listelenebilir. Yeni karma türlerini anlayan tarayıcılar, önceki ana makine tabanlı izin verilenler listelerini yoksayar. Yeni karma türlerini anlamayan tarayıcılar ise ana makine tabanlı izin verilenler listesini uygulamaya devam eder. Böylece siteler, hem yeni karma türlerini hem de ana makine tabanlı izin verilenler listesini ayarlayabilir. Bu sayede, destekleyen tarayıcılarda daha katı politika uygulanırken desteklemeyen tarayıcılarda bozulma riski olmadan çalışmaya devam edebilir.
Content-Security-Policy: script-src 'https:' 'url-sha256-u2cYltM/2wbvoRR0jMZ57KmFdVqqdPYa6GtdykFwBGc='
Ayrıca, yalnızca URL karmaları ayarlandığında geçerli olan ve strict-dynamic ile eşdeğer olan strict-dynamic-url'yi kullanıma sunduk. strict-dynamic, ana makine tabanlı izin verilenler listelerinin yoksayılmasına neden olduğundan belirli bir karma değerin izin verilenler listesine eklenmesini ve strict-dynamic'in uygulanmasını isteyen bir site şu gibi bir politika kullanabilir:
Content-Security-Policy: https: 'strict-dynamic-url' 'url-sha256-u2cYltM/2wbvoRR0jMZ57KmFdVqqdPYa6GtdykFwBGc='
Bu örnekte, henüz karma oluşturmayı desteklemeyen tarayıcılar yalnızca https: öğesini zorunlu kılar. Benzer şekilde, eval karmaları mevcut olduğunda unsafe-eval destekleyen tarayıcılar tarafından yoksayılır. Örneğin, aşağıdaki politika unsafe-eval olarak değerlendirilir. Bu, henüz eval karmalarını desteklemeyen tarayıcılarda tüm eval() kullanımına olanak tanırken eval karmalarını destekleyen tarayıcılarda yalnızca alert("hello world") eval() kullanımına izin verir.
Content-Security-Policy: script-src "unsafe-eval" "'eval-sha256-4vpsisrBP00v+tF/SsQ3RXWWYF28JSvTpR9D/wrxn/0='"
Geri bildiriminizi paylaşın
Geliştiricilerin bu uzantılarla ilgili geri bildirimlerini bekliyoruz.
script-src Yorumlarınızı GitHub'daki açıklayıcı ile ilgili bir sorun olarak gönderin.