Sécuriser vos applications Web avec l'intégrité des sous-ressources (SRI) et les calculateurs de hachage SRI
Dans le développement Web moderne, nous construisons rarement tout de zéro. Nous comptons sur les réseaux de diffusion de contenu (CDN) pour héberger nos bibliothèques préférées comme React, Vue ou Bootstrap. Cependant, cette dépendance introduit un risque : et si le CDN est compromis et que le script que vous chargez est remplacé par du code malveillant ?
C'est là qu'intervient l'intégrité des sous-ressources (SRI). Ce guide explique comment fonctionne SRI et comment utiliser un calculateur de hachage SRI pour assurer la sécurité de vos utilisateurs.
1. Qu'est-ce que l'intégrité des sous-ressources (SRI) ?
L'intégrité des sous-ressources (SRI) est une fonction de sécurité qui permet aux navigateurs de vérifier que les ressources qu'ils récupèrent (par exemple, à partir d'un CDN) sont livrées sans manipulation inattendue.
Comment ça marche
Lorsque vous incluez une ressource dans votre HTML, vous fournissez un hachage cryptographique de cette ressource dans l'attribut integrity. Le navigateur effectue alors les étapes suivantes :
- Récupère la ressource.
- Calcule le hachage de la ressource récupérée.
- Le compare au hachage que vous avez fourni.
- S'ils correspondent, la ressource est exécutée. S'ils ne correspondent pas, le navigateur bloque la ressource.
La syntaxe HTML
<script src="https://example.com/example-framework.js"
integrity="sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcOtpguf4Dez6GdrJCT9Wo+SWax9fEE99l"
crossorigin="anonymous"></script>
2. Utilisation d'un calculateur de hachage SRI
Pour implémenter SRI, vous avez besoin du hachage cryptographique correct du fichier que vous chargez. Un calculateur de hachage SRI automatise ce processus.
Algorithmes de hachage courants pour SRI
- SHA-256 : Sécurisé mais avec des hachages légèrement plus courts.
- SHA-384 : L'algorithme le plus couramment recommandé pour SRI (équilibrant sécurité et longueur).
- SHA-512 : Le plus sécurisé, ce qui donne des hachages plus longs.
Étapes pour générer un hachage SRI
- Fournir le fichier : Téléchargez la version locale du script ou fournissez l'URL de la ressource CDN.
- Sélectionner l'algorithme : Choisissez entre SHA-256, SHA-384 ou SHA-512.
- Générer : L'outil produira une chaîne commençant par le nom de l'algorithme (par exemple,
sha384-...). - Copier et coller : Insérez la chaîne résultante dans l'attribut
integrityde votre balise script ou link.
3. Pourquoi SRI est critique pour la sécurité Web moderne
Défense contre la compromission du CDN
Même si un CDN massif est piraté, SRI garantit que votre site reste sûr. Le code malveillant ne correspondra pas à votre hachage et le navigateur refusera simplement de l'exécuter.
Conformité et confiance
L'utilisation de SRI est une bonne pratique recommandée par des organisations de sécurité comme l'OWASP. Elle démontre à vos utilisateurs et clients que vous prenez la sécurité de leurs données au sérieux.
Prévention des attaques de l'« homme du milieu » (MITM)
SRI protège les utilisateurs sur des réseaux compromis (comme le Wi-Fi public) contre les attaquants qui pourraient tenter d'injecter du code malveillant dans le trafic.
4. Dépannage des échecs SRI
Si votre ressource ne se charge pas, vous pourriez voir une erreur dans la console telle que :
None of the "integrity" hashes in the "integrity" attribute match the content of the subresource. (Aucun des hachages d'intégrité de l'attribut « integrity » ne correspond au contenu de la sous-ressource.)
Causes communes :
- Hachage incorrect : Vous avez utilisé la mauvaise version du fichier lors de la génération du hachage.
- Attribut
crossoriginmanquant : Pour que SRI fonctionne sur des requêtes cross-origin, l'attributcrossorigin="anonymous"est obligatoire. - Compression du CDN : Certains CDN peuvent modifier le contenu du fichier (comme la minification ou la compression à la volée), ce qui modifie le hachage. Assurez-vous de hacher exactement ce que le navigateur reçoit.
Résumé des meilleures pratiques SRI
| Action | Pourquoi ? |
|---|---|
| Utiliser SHA-384 | Équilibre standard de l'industrie entre vitesse et sécurité. |
Toujours ajouter crossorigin |
Requis pour la validation SRI intersites. |
| Auditer les scripts tiers | N'utilisez SRI que pour les scripts en lesquels vous avez confiance provenant de sources réputées. |
| Automatiser la génération de hachage | Utilisez un calculateur SRI pour éviter les erreurs de saisie manuelle. |
Conclusion
L'intégrité des sous-ressources est un moyen puissant et peu coûteux d'augmenter considérablement la sécurité de votre application Web. En utilisant un calculateur de hachage SRI dans le cadre de votre processus de déploiement, vous pouvez protéger votre site et vos utilisateurs contre l'un des vecteurs d'attaque les plus courants sur le Web moderne.
FAQ : Questions fréquemment posées
Q : Puis-je utiliser SRI pour mes propres scripts internes ?
R : Oui, bien que ce soit moins critique que pour les scripts tiers. Cela peut toujours servir de vérification d'intégrité utile pendant votre processus de construction.
Q : Que se passe-t-il si un CDN met à jour la version du script ?
R : Si le contenu du fichier change (même un seul caractère), le hachage changera. Vous devez mettre à jour l'attribut integrity chaque fois que vous mettez à jour la version du script.
Q : SRI ralentit-il le chargement de la page ?
R : L'impact sur les performances est négligeable. Les navigateurs modernes calculent le hachage très rapidement alors qu'ils sont déjà en train de traiter le script.