【问题标题】:How to check the integrity of loaded Javascript code如何检查加载的 Javascript 代码的完整性
【发布时间】:2013-03-06 23:20:51
【问题描述】:

我运行一个比特币钱包,它使用浏览器端 Javascript 来加密和解密比特币密钥。

我想让 javascript 在 Github 上可供审查,然后从 github 存储库加载 javascript。

我的问题是我需要检查加载的 Javascript 的完整性,以确保在 Github 上没有被篡改。

我怎样才能最好地做到这一点?会不会是这样的。

  1. 使用 ajax 调用加载远程 Javascript。
  2. MD5 哈希和比较。
  3. 如果状态良好,执行它。

【问题讨论】:

  • 客户端不能自己搞乱校验和计算功能吗?
  • 也许将您的代码存储在另一个服务器上。只有您可以访问的 CDN。这样你就可以确定它没问题。
  • 这在检查客户端是否至关重要?我很确定您知道客户端实际上在任何方面都不安全。完整性检查确实必须由服务器端脚本完成,然后将其反馈给 JavaScript,否则您将面临巨大的安全问题。
  • 任何在浏览器中运行的东西都可以被篡改。直接加载或加载扩展或添加的脚本。
  • 我很确定明确不鼓励使用 github 作为 CDN。

标签: javascript


【解决方案1】:

现在有(或很快将有)一种优雅的方式来实现这一目标(在提出问题 2 年后)。

http://www.w3.org/TR/SRI/

您现在可以在脚本标签内指定“完整性”参数:

<script src="https://github.com/<path>/yourscript.js"
        integrity="sha256-SDf......">

这不适用于通过 AJAX 请求加载的脚本。但是您可以潜在地将脚本引用为指向 CDN 的脚本标签(最好不要直接在 github 上)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    相关资源
    最近更新 更多