缺少子资源完整性保护
Missing Subresource Integrity Protection
我已经在 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.
谁能解释一下这一切意味着什么,以便我可以从中学到一些东西,以及将来该怎么做才能避免这种情况?
Subresource integrity 是一种规范,"defines a mechanism by which user agents may verify that a fetched resource has been delivered without unexpected manipulation." 它基本上是您资产的校验和,如果不符合指定的完整性值,兼容的浏览器将不会加载资源。
只要您的 sprockets 版本为 3.x 或更高版本,就可以在 Rails 中轻松添加。您可以按照 sprockets documentation:
中的示例添加检查
javascript_include_tag :application, integrity: true
# => "<script src="/assets/application.js" integrity="sha256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs="></script>"
GitHub 工程师有一个 interesting blog post,他们在那里详细讨论了该功能。
我已经在 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.
谁能解释一下这一切意味着什么,以便我可以从中学到一些东西,以及将来该怎么做才能避免这种情况?
Subresource integrity 是一种规范,"defines a mechanism by which user agents may verify that a fetched resource has been delivered without unexpected manipulation." 它基本上是您资产的校验和,如果不符合指定的完整性值,兼容的浏览器将不会加载资源。
只要您的 sprockets 版本为 3.x 或更高版本,就可以在 Rails 中轻松添加。您可以按照 sprockets documentation:
中的示例添加检查javascript_include_tag :application, integrity: true
# => "<script src="/assets/application.js" integrity="sha256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs="></script>"
GitHub 工程师有一个 interesting blog post,他们在那里详细讨论了该功能。