Adds Subresource Integrity (SRI) attributes to your page's elements for better protection against JavaScript DDoS attacks.
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!
wp-sri
folder to the /wp-content/plugins/
directory.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.
filterTag
function now requires a third parameter.textdomain
files to prepare for translation.crossorigin="anonymous"
attribute/value pair to modified elements to enable Firefox 43’s handling of integrity checks.