Subresource Integrity (SRI) Manager

Plugin Banner

Subresource Integrity (SRI) Manager

by Meitar

Download
Description

A WordPress plugin for easily adding a Subresource Integrity (SRI) declaration to any third-party content your pages load. The standards-based integrity attribute is a defense-in-depth best practice currently making its way into browsers. This plugin closely tracks the W3C draft.

Currently, the plugin automatically detects any third-party resources (like JavaScript libraries) and will make a SHA-256 hash of the content. It remembers this hash (until you uninstall the plugin or delete the hash from the admin interface), and modifies your page’s <script> and <link> elements on-the-fly. This way, your visitor’s Web browsers can automatically ensure that the specific library you’re using is the one they’re loading.

Using this plugin can dramatically reduce the liklihood that visitors to your site will be strong-armed into participating in an HTTP DDoS attack. For more information, see “An introduction to JavaScript-based DDoS” by Nick Sullivan.

Future versions of this plugin will also provide an easy-to-use interface for site administrators to maintain a customized list of resource hashes, and to trigger on-demand integrity checks of these resources.

This plugin is still somewhat skeletal. Feature requests and patches are welcome! Please provide a test case with your patch. See the tests subdirectory for unit tests.
If you like this plugin, please consider making a donation for your use of the plugin, or better yet, contributing directly to my’s Cyberbusking fund. Your support is appreciated!

  1. Upload the unzipped wp-sri folder to the /wp-content/plugins/ directory.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.

WP-SRI breaks my plugin/theme. How can I prevent it from blocking my assets?

If you’re a site administrator, you can manually exclude specific resources by their URL from the Subresource Integrity Manager screen under Tools → Subresource Integrity Manager.

If you’re a plugin or theme author, you can use the option_wp_sri_excluded_hashes filter hook to dynamically whitelist assets. Please only do this for assets that are truly personalized, that is, only for assets whose URL is always the same but whose content is different for each user or page load.

For example, to ensure that the URL at https://example.com/personalized_content is never checked for integrity with SRI attributes, use the following PHP code:

function example_never_add_integrity_checking( $items ) {
    $items[] = 'https://example.com/personalized_content';
    return $items;
}
add_action( 'option_wp_sri_excluded_hashes', 'example_never_add_integrity_checking' );

Learn more about this filter hook.

Plugin appears to abandoned, long time no updates, appears non functional.

By Kevin de Bie (AlphaBootis) on July 16, 2024

Plugin doesn't appear to do anything/work on any of my WordPress 6 installations.
I have been testing with Mozzilla's observatory.

I really want to like this, but unfortunately does not work in my environment

By darkknight83 on September 17, 2023

in the age of page-caching (wp-super-cache) and minification/consolidation of scripts/styles (autoptimization), this probably needs to be hooked in after all that gets done otherwise the hash generated won't match. Ideally, this tests the consolidated minimized script locally even before it gets uploaded to the CDN to cover the pathological case that the script gets mutated at the CDN even before it gets it's SHA hash done.

Works on WordPress 5.8.1

By apollosk on October 4, 2021

The plugin works as advertised, out of the box. Kudos to the developers. It would be smart to update the compatibility info, Tested up to:...

Plugin Conflicts with BrainTree Payments

By forkenbrock on January 10, 2021

Plugin caused my BrainTree payment gateway to fail payments.

interferes with paymaent gateway

By techguysa on October 19, 2020

Using the Plug in Yoco Payment Gateway by Yoco for credit cards and this plug in prevents Yoco from poping up and then redirects to the confirm order page like if it was an EFT when customer make payment via card. This prevents card payments. So I disabled it. This worked but im not sacrificing a function to kill revenue. There must be another way had another way just cant remember what the htaccess code was for this.

Great Plugin

By kiranrs on August 6, 2020

I appreciate your effort for making this plugin, really helpful. But not working for all external scripts.Still you're my hero.

Giving an 'A' for effort

By Kenny Moore (bygosh) on May 24, 2020

I am confident your advice ... Ensure your assets (scripts, stylesheets) were added using the WordPress API hooks, such as wp_enqueue_script(), and so on. ... is sound. It is just a bit beyond my skill set/comfort level. This reflects my limitations, not the plugin. The SRI thing badly needs a solution that dunderhead WP users like myself can implement, and you seem to be the only one trying to address it. So, good for you. Much appreciated. I'll do some learning and muster my courage and perhaps try again.

Doesn't work for most of resources

By vedmant on October 15, 2019

For my installation it added integrity only on one resource, a font css from googleapis.com, but site has tons of other resources loaded from googletagmanager.com, uberflip.com, leadspace.com and so on.

Must-have WordPress Tool

By solaranamnesis on June 23, 2017

The plugin works as described and is easy to use; this should be in everyone's WordPress toolkit

Excellent

By gerarde on May 15, 2017

An excellent little plugin that implements Subresource Integrity (SRI) with no fuss. Remember it only adds the integrity attribute tag to <script> tags: 1) referencing files served via https 2) on a different server

Version 0.4.0

  • Stricter parsing for stylesheet tags; the filterTag function now requires a third parameter.

Version 0.3.0

  • Feature: Add ability to exclude URLs. Useful when SRI attributes block personalized assets.

Version 0.2.2

  • Bugfix: Load plugin textdomain files to prepare for translation.

Version 0.2.1

  • Add the crossorigin="anonymous" attribute/value pair to modified elements to enable Firefox 43’s handling of integrity checks.

Version 0.2

  • Feature: A simple administrative interface can be found under the “Subresource Integrity Manager” option in your WordPress Tools menu. This interface allows you to view the URL and hash pairs currently known by your site, and to delete them. Deleting a known hash will cause WordPress to refetch and rehash the resource when it is next requested.

Version 0.1

  • Initial release.
Back to top