Définition
SRI est une norme du W3C pour protéger des attaques par modification des ressources proposées par votre site internet, ou de celles que vous ajoutez, fournies par d’autres. Dans l’immédiat, elle ne s’utilise que pour les scripts JS et les feuilles de styles. Si la somme de contrôle relative à la ressource attendue ne correspond pas à celle déclarée, alors la ressource n’est pas (télé)chargée par le client web.
Le bénéfice de cette technique est réelle, mais elle peut être un peut complexe à mettre en place.
Il est possible de l’utiliser conjointement avec la directive
require-sri-for
de l’entête
CSP
.
Options
integrity
: la somme de contrôle, encodée en base64, précédée de la fonction de hash utilisée. Seuls les algorithmessha256
,sha384
- recommandation minimale - , etsha512
sont supportés. Il est possible de spécifier plusieurs niveaux de hash, dans ce cas, ce sera le hash le plus fort qui sera consulté en priorité ; s’il n’est pas supporté, ce sera celui qui le précéde.crossorigin
: informe le client web que la ressource partagée l’est de manière anonyme, sans aucun cookie. Une seule option :anonymous
.
Exemples
Fichier :
|
|
Bien-sûr, il est possible de faire de même - c’est fortement encouragé
- avec vos propres ressources…
Code
Ci-dessous, retrouvez le code de génération shell :
cat "${file}" | openssl dgst -"${algo}" -binary | openssl enc -base64 -A
Documentations
- Générateur de hash pour SRI : https://www.srihash.org/
- Support actuel : http://caniuse.com/#search=sri