Security/Subresource Integrity: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(→‎Engineering: add code walkthrough)
(→‎QA: mention the automated tests)
Line 29: Line 29:


== QA ==
== QA ==
The automated tests live in these two places:
* [https://hg.mozilla.org/mozilla-central/file/f1dffc8682fb/dom/security/test/sri dom/security/test/sri/]
* [https://hg.mozilla.org/mozilla-central/file/f1dffc8682fb/testing/web-platform/tests/subresource-integrity testing/web-platform/tests/subresource-integrity/]


To turn on debugging output, export the following environment variable:
To turn on debugging output, export the following environment variable:

Revision as of 23:25, 23 September 2015

Description

Subresource Integrity is a mechanism by which user agents may verify that a fetched resource has been delivered without unexpected manipulation. It landed in Firefox 43.

Engineering

The bulk of the code lives in these two classes:

which hook into:

Both of these hooks work in the same way:

  1. We start by creating an SRIMetadata object from the content of the integrity attribute as we process the element:
  2. We then wait until the file is downloaded and check that the hash of the contents matches the SRI hash:
  3. We return NS_ERROR_SRI_CORRUPT, which fails the load and triggers the error event on that element, if the hashes don't match.

QA

The automated tests live in these two places:

To turn on debugging output, export the following environment variable:

NSPR_LOG_MODULES="SRI:5,SRIMetadata:5"

Evangelism

Documentation