3

我在 Heroku 上搭建了一个 django 博客应用程序,目前一切正常,但我有一个关于Missing Subresource Integrity Protection.

我对使用 heroku 插件很陌生,但我已经设置了tinfoil以确保安全,并且在初始扫描后我遇到了 3 个漏洞。扫描结果表明我是Missing Subresource Integrity Protection,他们向我提出了这个建议:

    > All externally loaded resources must have their content pinned using
    > the subresource integrity mechanisms provided by modern browsers. This
    > involves computing a hash of the contents of the resource, and
    > specifying this hash when loading that resource. In the case of a
    > script, this might look like the following:

        <script src="https://example.com/include.js"
                    integrity="sha256-Rj/9XDU7F6pNSX8yBddiCIIS+XKDTtdq0//No0MH0AE="
                    crossorigin="anonymous"></script>

SRI Hash is an option for computing the necessary hashes.

有人可以解释一下这一切意味着什么,这样我就可以从中学到一些东西,以及将来该怎么做,这样我就可以避免这种情况?

4

1 回答 1

1

子资源完整性是一种规范,它“定义了一种机制,用户代理可以通过该机制验证获取的资源是否已在没有意外操作的情况下交付。” 它基本上是您资产的校验和,如果资源与指定的完整性值不匹配,兼容的浏览器将不会加载资源。

这很容易在 Rails 中添加,只要您的 sprockets 版本是 3.x 或更高版本。您可以按照sprockets 文档中的示例添加检查:

javascript_include_tag :application, integrity: true
# => "<script src="/assets/application.js" integrity="sha256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs="></script>"

GitHub Engineering 有一篇有趣的博客文章,他们在其中详细讨论了该功能。

于 2015-11-20T07:19:49.473 回答