SRI

Use SRI to load securely assets loaded from a external CDN.

Options See on deno.land

algorithm sha256 sha384 sha512

The algorithm used to calculate the cryptographic hash of the file

Default:
"sha384"
crossorigin anonymous use-credentials

The CORS setting for the file being loaded

Default:
"anonymous"
selector string

The selector to find the elements to add the integrity attribute

Default:
"script[src], link[rel=stylesheet][href]"

Description

SRI (Subresource Integrity) is a browser feature to protect your site and your users from compromised code loaded from external CDN. It verifies the code loaded by the browser is exactly the same code that you got during the build process, without unexpected manipulations. You can learn more about SRI in the MDN article.

The plugin searches for <script> and <link rel="stylesheet"> elements in your pages that load resources from other domains and add the integrity and crossorigin attributes automatically. For example, if you have this code:

<script src="https://code.jquery.com/jquery-3.7.0.slim.min.js"></script>

The plugin outputs the following:

<script
  src="https://code.jquery.com/jquery-3.7.0.slim.min.js"
  integrity="sha256-tG5mcZUtJsZvyKAxYLVXrmjKBVLd6VpVccqz/r4ypFE="
  crossorigin="anonymous"
></script>

Installation

Import this plugin in your _config.ts file to use it:

import lume from "lume/mod.ts";
import sri from "lume/plugins/sri.ts";

const site = lume();

site.use(sri(/* Options */));

export default site;

Note

Note that SRI only works with URLs that always return the same code, so you must use URLs that are guaranteed never to change. Learn how to use SRI with jsDelivr.