【发布时间】:2016-08-01 14:04:08
【问题描述】:
我正在处理一些 JavaScript 文件将托管在 CDN 上的场景。我想有一些机制,这样当这些文件在用户端下载时,我可以确保这些文件没有被篡改,并且确实来自指定的 CDN。
我知道如果我使用 SSL,任务会非常简单,但我仍然想确保即使在没有 SSL 的 HTTP 上也能提供正确的文件。
据我所知,目前没有跨平台支持的 JavaScript 文件数字签名等机制。也许不需要?
浏览器是否有内置方法来验证 JavaScript 文件的作者?有什么办法可以安全地做到这一点吗?
【问题讨论】:
-
虽然我觉得这个问题很有趣,但它不是题外话吗?
-
为什么要在 http 上提供文件?
-
"但是为什么没有这样的机制呢?"因为它真的很难。一旦您的数据离开您的服务器,它就完成了。 HTTPS 有帮助,但如果它是一个普通的 HTTP 连接,任何验证都可能失败(或者更确切地说 - 通过)。 MITM 攻击可以在浏览器获得预期之前修改您的预期签名和/或您提供的签名。因此,当用户收到一些有效载荷时,它会被认为是完全安全的……但不一定如此。
-
"但是为什么没有这样的机制呢?"因为在 HTTPS 中已经有一个便宜、有效且广泛适用的解决方案。
-
这可能应该在 ServerFault 或 Security 上,因为它实际上是关于以安全的方式提供文件,并且与编程的任何关系都只是相切的,因为所述文件恰好代表源代码。