Pour se prémunir contre les attaques, un développeur doit atténuer les failles et ajouter des fonctionnalités de sécurité à une application. Heureusement, sur le Web, le navigateur offre de nombreuses fonctionnalités de sécurité. Certains d'entre eux peuvent être activés par les développeurs, d'autres sont activés par défaut pour protéger les utilisateurs.
Le concept de "bac à sable"
Les navigateurs Web modernes sont conçus sur le principe d'un "bac à sable". Un bac à sable est un mécanisme de sécurité utilisé pour exécuter une application dans un environnement restreint. Tout comme le bac à sable physique d'une aire de jeux où les enfants peuvent créer tout ce qu'ils veulent dans les limites sans causer de désordre ailleurs, le code d'application a la liberté de s'exécuter dans un environnement restreint. Par exemple, JavaScript peut ajouter et modifier des éléments sur la page, mais peut ne pas avoir accès à un fichier JSON externe. Cela est dû à une fonctionnalité de bac à sable appelée "same-origin",
Pourquoi un bac à sable est-il nécessaire ?
Chaque jour, les utilisateurs du Web téléchargent du code arbitraire et l'exécutent plusieurs fois sur leur ordinateur ou leur téléphone. Si quelqu'un vous disait : Téléchargez et exécutez cette application !", vous pouvez faire une pause pour déterminer si cette application provient d'une source fiable, renseignez-vous sur le fournisseur de l'application ou examinez attentivement les avis. Que se passe-t-il lorsque quelqu'un vous envoie une URL du type "consultez cet article de blog" ? Vous cliqueriez probablement dessus sans poser de questions telles que "Quel type de JavaScript ce site téléchargera-t-il ?".
Le bac à sable du navigateur est la fonctionnalité clé qui facilite la navigation sur le Web en facilitant l'exécution de code arbitraire.
Sécurité intégrée à la conception
Si le navigateur effectue un bac à sable pour chaque application Web, devons-nous même nous soucier de la sécurité ? Oui, absolument !
Tout d'abord, les fonctionnalités du bac à sable ne constituent pas le bouclier parfait. Même si les ingénieurs des navigateurs travaillent dur, les navigateurs peuvent présenter des failles et les pirates informatiques tentent toujours de contourner le bac à sable (comme avec Spectre Attack).
Le bac à sable peut parfois nuire à la création d'une expérience Web exceptionnelle. Par exemple, un navigateur peut bloquer une requête de récupération d'une image hébergée sur un autre domaine. Vous pouvez partager des ressources sur différents domaines en activant le partage de ressources entre origines multiples (CORS), mais si ce n'est pas fait avec précaution, vous pouvez exposer une ressource à tous les autres internautes, ce qui annule essentiellement le bac à sable.
Conclusion
Une expérience Web sécurisée ne peut être obtenue que si la sécurité est intégrée à la conception de votre application. Une conception robuste commence par la compréhension des fonctionnalités existantes. Les deux guides suivants présentent en détail CORS et les règles de même origine.