[英]Specifying the hash of a script from an untrusted host
是否有任何實現或規范在 <script> 標簽的屬性中包含哈希或簽名,以便瀏覽器可以在執行之前驗證是否檢索到正確的文件? 就像是:
<script
src="http://cdn.example.com/jquery-2001.js"
signature="sha-256/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
></script>
動機是這樣的:通常,您為站點使用的每個額外 CDN 或主機都會增加您的漏洞,因為添加了一個可以被黑客入侵以危害您站點的新目標。 允許您的主要前端服務器斷言這些文件的散列或簽名可以完全消除這種風險,讓您在設計架構時更加靈活。 您甚至可以從不受信任的對等網絡請求丟失的文件。
我以為我記得有關此的規范,但一直找不到。
此功能由 W3C 提議為Subresource Integrity 。 截至 2015 年 12 月,此建議已由Chrome 44和Firefox 43 實施。
例 1<link rel="stylesheet" href="https://site53.example.net/style.css" integrity="sha256-vjnUh7+rXHH2lg/5vDY8032ftNVCIEC21vL6szrVw9M=" crossorigin="anonymous">
內容安全策略級別 2有一個表面上相似的特性,但它只限制內聯<script>
和<style>
元素的內容,而不限制外部元素。
根據 Mozilla Developer Network 文檔,它看起來不支持:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
但是,您始終可以通過 XHR 獲取資源(假設配置了 CORS),對其進行散列,如果它很酷,則使用 eval()。 然而,雖然這是一個有趣的技術練習,但它似乎並不實用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.