Important
We are updating the images for OroCommerce version 6.1 to align with the latest changes in the back-office design. During this transition, some images may still show older versions. Thank you for your patience as we work to update all visuals to reflect these changes.
Subresource Integrity (SRI)
Subresource Integrity (SRI) is a security feature that allows browsers to verify that resources they fetch (like scripts or stylesheets) are delivered without unexpected manipulation. It works by allowing you to provide a cryptographic hash of the resource, which the browser checks against the fetched resource. For more details, see: Subresource Integrity.
Using SRI
You can use the Subresource Integrity feature by specifying a cryptographic hash of a resource (file)
you’re telling the browser to fetch, in the value of the integrity
attribute of a <script> element or a <link> element with rel=”stylesheet”, rel=”preload”.
Hint
This feature is disabled by default, to enable it, you must set the configuration option “oro_asset.subresource_integrity_enabled” to true.
Use the Twig oro_integrity
function to add an integrity
attribute with the appropriate hash for the asset, along with the `` crossorigin=”anonymous”`` attribute.
<script src="{{ '/build/default/app.js' }}" {{ oro_integrity('/build/default/app.js') }}></script>
<script src="{{ asset(src) }}" {{ oro_integrity(asset(src)) }}></script> // the same with asset function
Note
Make sure the resource you are adding integrity to is /build/default/app.js represented in /build/<theme_name>/integrity.json
Expected output:
<script src="/build/default/app.js?v=e61610e4" integrity="sha384-DAILU17u6emSxfVg8atEESVcx0aMd5gHIbhmP9vx2BlXfdWSaQeRrRdVoXhnOwAQ" crossorigin="anonymous"></script>
Note
If the browser checks the resource hash and it is invalid, the resource will be blocked and an appropriate error will be displayed in console.
Example of an error when the integrity check fails:
Warning
Failed to find a valid digest in the ‘integrity’ attribute for resource ‘/build/default/app.js?v=e61610e4’ with computed SHA-384 integrity ‘kIgiSxsSDNGNivgnro16TVNvrB3ct7PxuBrXu9sbQhsMqdUIei8bBcaXti/1uYi’. The resource has been blocked.