Pour se défendre 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 fournit de nombreuses fonctionnalités de sécurité. Certaines sont disponibles pour les développeurs qui souhaitent les activer, tandis que d'autres sont activées par défaut pour protéger les utilisateurs.
L'idée d'un "bac à sable"
Les navigateurs Web modernes sont basés sur le concept de "sandbox". 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 ce qu'ils veulent dans les limites sans salir ailleurs, le code d'application est libre de s'exécuter dans un environnement restreint. Par exemple, JavaScript peut ajouter et modifier des éléments sur la page, mais peut être limité dans l'accès à un fichier JSON externe. Cela est dû à une fonctionnalité de bac à sable appelée "même origine".
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 dit "Hey ! Téléchargez et exécutez cette application !", vous pourriez vous arrêter pour réfléchir à la provenance de cette application, vous renseigner sur le fournisseur de l'application ou lire attentivement les avis. Que se passe-t-il lorsqu'un utilisateur vous envoie une URL en vous disant "regarde cet article de blog" ? Vous cliqueriez probablement dessus sans vous poser de questions comme "Quel type de JavaScript ce site va-t-il télécharger ?".
Le bac à sable du navigateur est la fonctionnalité clé qui permet de naviguer sur le Web sans friction en rendant l'exécution de code arbitraire plus sûre.
Concevez-le de manière sécurisée
Si le navigateur met en bac à sable chaque application Web, devons-nous nous soucier de la sécurité ? Oui, absolument !
Tout d'abord, les fonctionnalités du bac à sable ne sont pas une protection parfaite. Même si les ingénieurs de navigateurs travaillent dur, les navigateurs peuvent présenter des failles et les pirates informatiques tentent toujours de contourner le bac à sable (par exemple, avec l'attaque Spectre).
La sandbox pouvait parfois nuire à la création d'une expérience Web de qualité. Par exemple, un navigateur peut bloquer une requête d'extraction vers une image hébergée sur un autre domaine. Vous pouvez partager des ressources sur différents domaines en activant le partage de ressources inter-origines (CORS, Cross-Origin Resource Sharing). Toutefois, si vous ne le faites pas avec précaution, vous risquez d'exposer une ressource à tous les autres utilisateurs du Web, ce qui annule l'effet du bac à sable.
Conclusion
Pour offrir une expérience Web sécurisée, la sécurité doit être intégrée à la conception de votre application. Une conception solide commence par la compréhension des fonctionnalités existantes. Les deux guides suivants présentent en détail CORS et la règle de même origine.