首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何确保通过CDN传递的JavaScript文件不被篡改?

如何确保通过CDN传递的JavaScript文件不被篡改?
EN

Stack Overflow用户
提问于 2016-08-01 22:04:08
回答 3查看 13.1K关注 0票数 90

我正在处理一个场景,在这个场景中,一些JavaScript文件将被托管在CDN上。我希望有一些机制,这样当这些文件在用户端下载时,我可以确保这些文件没有被篡改,并且确实来自指定的CDN。

我知道,如果我使用SSL,这项任务非常容易,但我仍然希望确保即使在没有SSL的HTTP上也能提供正确的文件。

据我所知,目前还没有像JavaScript文件的数字签名这样的跨平台支持的机制。也许它不是必需的?

浏览器中有没有内置的方法来验证JavaScript文件的作者?我能做些什么来以一种安全的方式做到这一点?

EN

回答 3

Stack Overflow用户

发布于 2016-08-01 22:12:26

您要查找的是subresource integrity检查。

例如,下面是jQuery CDN代码片段:

代码语言:javascript
复制
<script src="https://code.jquery.com/jquery-3.1.0.js"
        integrity="sha256-slogkvB1K3VOkzAI8QITxV3VzpOnkeNVsKvtkYLMjfk="
        crossorigin="anonymous"></script>
票数 36
EN

Stack Overflow用户

发布于 2016-08-02 10:35:13

如果您的敌对模型允许攻击者修改从CDN传送的JavaScript文件,则您的敌对模型允许攻击者在传送时修改引用源,以删除任何验证尝试,将源地址更改为CDN以外的地址,和/或完全删除对JavaScript的引用。

让我们不要打开蠕虫的罐子,你的应用程序如何确定用户的解析器是否通过HTTP请求正确解析到CDN (或任何其他没有经过验证的信任链的机制)。

/etc/hosts:

代码语言:javascript
复制
#  ...
1.2.3.4    vile-pirates.org    trustworthy.cdn
#  ...
票数 2
EN

Stack Overflow用户

发布于 2019-10-07 14:09:08

您可以用子资源完整性来确保这一点。许多公共CDN在CDN网站上提供的可嵌入代码中包含SRI哈希。例如,在PageCDN上,当您单击jQuery CDN页面上的jquery文件时,您可以选择是复制URL还是使用包含SRI散列的脚本标记,如下所示:

代码语言:javascript
复制
<script src="https://pagecdn.io/lib/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>

在页面加载时,浏览器将发出对此资源的请求,并在请求完成时将接收到的文件的散列与脚本标记中作为完整性值给定的散列进行匹配。如果两个散列都不匹配,浏览器将丢弃jquery文件。

目前,全球91%的浏览器都支持该功能。有关caniuse的更多详细信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38700923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档