gpt4 book ai didi

security - 标签的内容安全策略/子资源完整性?

转载 作者:行者123 更新时间:2023-12-02 09:12:14 26 4
gpt4 key购买 nike

我托管一个网站,允许用户下载存储在内容分发网络 (CDN) 上的文件。从我的网站到 CDN 上的文件的链接类似于 <a href=https://cdndomain.com/path/to/file> 。我希望有一种方法可以让我的用户确保该文件没有被 CDN 操纵。

当然,我可以在我的网站上发布文件的哈希值(当然这是通过 SSL/TLS 保护的)。然后,用户下载文件后,他们可以获取文件的哈希值并验证它是否与我网站上发布的哈希值匹配。这并不罕见。但是,我的许多用户不够精明,无法理解这个过程。而且,即使对于那些这样做的人来说,这个过程也有点麻烦。我正在寻找一种更自动化/更方便的方法来确保该文件未被操纵。

我知道Content Security Policy (CSP) 和 Subresource Integrity (SRI) 现在受 Chrome、Firefox 和 Safari 支持。使用 CSP/SRI,站点可以确保 .js 文件、.css 文件等托管在其他地方并由 <script> 引用。或<link>标签尚未通过在 <script> 中包含目标文件的哈希值进行操作。或<link>使用 integrity 的标签属性,例如:

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css" integrity="sha384-Zug+QiDoJOrZ5t4lssLdxGhVrurbmBWopoEl+M6BdEfwnCJZtKxi1KgxUyJq13dy" crossorigin="anonymous">

这非常方便,因为浏览器会检查目标文件的哈希值是否与integrity中指定的哈希值相匹配。属性“在幕后”,无需任何用户干预。从 CDN 下载文件后,浏览器会获取文件的哈希值并检查该哈希值是否与 integrity 中提供的哈希值匹配。 <script> 的属性或<link>标签。如果哈希值不匹配,浏览器会警告用户,并且不会执行脚本或应用 css 样式表。

我正在为 <a> 中引用的资源寻找类似的内容标签 – 我可以在 <a> 中指定目标资源的哈希值标签,并且浏览器会在从 CDN 下载资源之后但在将其提供给用户之前执行类似的检查,并在哈希值不匹配时警告用户。但根据上面引用的 MDN 文档,CSP 和 SRI 仅适用于 <script>标签和<link>标签,而不是<a>标签。

有人知道解决办法吗?

最佳答案

SRI 和 CSP 都不是为此而生的;该项目实际上并未加载到页面上,因此它们都不会真正触发,并不是有办法在 <a> 上指定要求。无论如何都要标记。

这两者都不完全是安全向量;这些旨在阻止恶意代码在浏览器中运行。一旦您下载了文件,除非它触发内置的 Chrome“可疑下载”警告,否则您就几乎要靠自己了。

我想说你的选择是:

A)提供一个页面,用户可以在其中上传文件来为他们生成所述哈希值,并且当您在幕后时,也可以实际匹配它并生成一条消息,显示“这与 X 的哈希值匹配”文件!”

B) 放弃 CDN。根据定义,他们是中间人,因此要完全信任 TLS,您需要将文件直接传送给用户或至少完全控制 CDN。

您选择哪一个取决于您想要投入多少努力以及放弃 CDN 的实际程度。显然,A) 让您保留 CDN,但需要更多的编程,B) 基本上无需编程,但在逻辑上可能非常容易或完全不可能。

关于security - <a> 标签的内容安全策略/子资源完整性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48063150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com