2015-03-26 11 views
17

< komut dosyası> etiketinin bir öznitelikinde bir sağlama veya imza eklenmesi için herhangi bir uygulama veya belirtim var mı, böylece tarayıcı, yürütmeden önce doğru dosyanın alındığını doğrulayabilir ? gibi bir şey: Genellikle, her bir ek CDN veya sitenizin güvenliğini ihlal etmesine kesmek olabilir yeni bir hedef ekleyerek şablonu açığını artırır siteniz için kullanmak barındırmak:Güvenilmeyen bir ana bilgisayardan komut dosyasının karma değerini belirleme

<script 
    src="http://cdn.example.com/jquery-2001.js" 
    signature="sha-256/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" 
></script> 

motivasyon budur. Birincil ön uç sunucularınızın bu dosyaların karmalarını veya imzalarını göstermesine izin vermek, bu riski tamamen ortadan kaldırarak, mimarinizi tasarlarken daha esnek olmanızı sağlar. Güvenilmeyen eşler arası ağdaki eksik dosyaları bile talep edebilirsiniz.

Bu konuda bir özellik hatırladım, ancak bulamadık. karma onu, (CORS'yi varsayarak yapılandırılmış)

Ancak https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script

, her zaman XHR'nin aracılığıyla bir kaynak getir olabilir ve eğer:

+0

[İmza 'özelliği yok.] (Https://html.spec.whatwg.org/multipage/scripting.html#the-script-element) Neden buna ihtiyacınız var? – undefined

+0

Bunun kabul edilen standartlarda olmasını beklemiyordum, ancak bazı platformlarda uygulanan bir teklif olduğunu düşündüm. İmza, ismin ne olabileceğinin bir örneğiydi - gerçek ismin ve sözdiziminin benim örneğimden daha iyi düşünülmüş olmasını beklerdim. – Tim

+0

Bunun gibi bir şey, güvenlik riskinizi arttırmadan, paylaşılan CDN'leri (jQuery tarafından sağlananlar gibi) veya genel olarak CDN'leri kullanabilmek için gereklidir. Genel olarak eklediğiniz her bir CDN hizmeti, sitenizden ödün vermek için saldırıya uğramış bir hizmet daha demektir. Birincil siteniz başvuruda bulunduğu dosyaların karmalarını/imzalarını ileri sürebilirse, bu risk ortadan kaldırılır. Eminim sonunda bir standart olacak. – Tim

cevap

18

Bu özellik W3C tarafından Subresource Integrity olarak önerilmiştir. Aralık 2015 itibariyle, bu öneri by Chrome 44 ve Firefox 43 uygulanmıştır.

Örnek 1
<link rel="stylesheet" href="https://site53.example.net/style.css" 
     integrity="sha256-vjnUh7+rXHH2lg/5vDY8032ftNVCIEC21vL6szrVw9M=" 
     crossorigin="anonymous"> 

var a superficially similar feature in Content Security Policy Level 2, ancak sadece inline <script> ve <style> elemanlarının değil, dış olanlar içeriğini kısıtlar.

0

Öyle görünmüyor Mozilla Geliştirici Ağı docs göre desteklenir Bu harika, eval(). Bununla birlikte, ilginç bir teknik egzersiz yaparken pratik görünmüyor.