Sécurité
Table des matières
Conseils de sécurité de base
Données sensibles dans le code
Il faut éviter d'écrire des données sensibles (clé de cryptage, clé api privée, mot de passe, etc.) dans le code de l'application.
HTTPS
Le protocole HTTPS est un protocole de communication sécurisé. Il permet de chiffrer les données échangées entre le client et le serveur. On s'assure ainsi que si les données échangées sont interceptées, elles ne peuvent pas être lues.
Règles de base à suivre :
- Le site déployé doit être accessible via HTTPS. Le fait d'utiliser HTTPS permet de protéger les données sensibles qui sont envoyées au serveur, comme le mot de passe lors de la connexion
- Si le code de l'application communique avec un serveur, par exemple un API REST, il faut utiliser le protocole HTTPS. Ainsi, les données sensibles ne sont pas transmises en clair.
Rester connecter ou non ?
La [persistance de la connexion]() est une fonctionnalité courante dans les applications web. Elle permet à l'utilisateur de ne pas avoir à se reconnecter à chaque fois qu'il visite le site ou l'application. Par contre, il faut faire attention de ne pas laisser l'utilisateur connecté indéfiniment. L'utilisation de jetons d'authentification avec une durée de validité (expiration) est une bonne pratique pour éviter les risques de sécurité. Bien entendu, la durée de validité du jeton varie en fonction du contexte et de la sensibilité des données.
Validation coté client ou serveur ?
La validation côté client permet de fournir des rétroactions instantanées à l'utilisateur et d'éviter les allers-retours inutiles avec le serveur. Elle peut inclure des vérifications basiques, telles que la présence de champs obligatoires, le formatage correct des données, ou la vérification de la longueur minimale ou maximale des champs.
Cependant, la validation côté client peut être contournée ou désactivée par l'utilisateur, c'est pourquoi il ne faut pas s'y fier exclusivement pour garantir la sécurité et l'intégrité des données. Une validation côté serveur est donc toujours nécessaire pour assurer la sécurité des données.
Un bon point de départ concernant la sécurité web est l'OWASP Top Ten et l'OWASP Web Security Testing Guide.
Conseils pour sécuriser votre application VueJs
Sécuriser une application Vue.js 3 (ou toute autre application Web) est un processus multi-étapes qui englobe plusieurs aspects. Voici quelques conseils de base que vous pouvez suivre pour renforcer la sécurité de votre application Vue.js :
-
Validation des entrées côté client et serveur : Assurez-vous que toutes les entrées de l'utilisateur sont validées avant d'être traitées. Cela comprend la validation côté client, pour améliorer l'expérience utilisateur, et la validation côté serveur, pour garantir la sécurité. Les entrées non validées peuvent conduire à des attaques par injection SQL, des scripts intersites (XSS) et d'autres vulnérabilités.
- TODO: Effectuez la validation côté client avec une des méthodes provenant de la documentation du cours
- La validation côté serveur devrait être faite au niveau de l'API.
-
Utilisation de directives v-html avec prudence : Vue.js fournit une directive v-html qui permet d'injecter du HTML brut dans votre page. C'est très pratique, mais aussi potentiellement dangereux car il peut ouvrir la voie à des attaques XSS. Évitez d'utiliser v-html avec du contenu non fiable.
- TODO: Vérifiez qu'aucune utilisation de v-html n'est faite dans votre code.
L'utilisation de contenu généré par l'utilisateur doit aussi être vérifiée, mais dans le contexte du TP vousn'avez pas à le faire.
Voir la documentation
- TODO: Vérifiez qu'aucune utilisation de v-html n'est faite dans votre code.
-
Utilisation de HTTPS : Assurez-vous que votre application est servie sur HTTPS. Cela garantit que toutes les communications entre le client et le serveur sont chiffrées et ne peuvent pas être interceptées ou modifiées en transit.
- TODO: Assurez-vous que la version déployée est en HTTPS. Netlify offre le cryptage SSL pour ses sites.
Voir la documentation
- TODO: Assurez-vous que la version déployée est en HTTPS. Netlify offre le cryptage SSL pour ses sites.
-
Mise à jour des dépendances : Assurez-vous que toutes vos dépendances sont à jour. Les anciennes versions de bibliothèques et de frameworks peuvent contenir des vulnérabilités connues qui peuvent être exploitées.
- TODO: Assurez-vous de mettre à jour toutes les librairies de votre projet avant le déploiement
Voir la documentation
- TODO: Assurez-vous de mettre à jour toutes les librairies de votre projet avant le déploiement
-
Utilisation de Content Security Policy (CSP) : CSP est une mesure de sécurité qui peut aider à atténuer les attaques de type cross-site scripting. Elle permet de spécifier les sources d'où le navigateur est autorisé à charger des ressources.
- Non évalué dans le TP.
-
Utilisation de tokens CSRF : Les tokens CSRF aident à prévenir les attaques de type cross-site request forgery. Ces attaques se produisent lorsque les requêtes malveillantes sont envoyées de sites tiers à votre application.
- Non évalué dans le TP.
-
Limitation de l'accès aux données sensibles : Assurez-vous que seuls les utilisateurs autorisés ont accès aux données sensibles. Cela comprend la mise en œuvre de l'authentification, de l'autorisation et du contrôle d'accès basé sur les rôles.
- Non évalué dans le TP.
-
Gestion sécurisée des sessions : Les sessions doivent être gérées de manière sécurisée, en utilisant des identifiants de session uniques et en évitant l'exposition des informations de session.
- Non évalué dans le TP.
-
Gestion des erreurs : Les messages d'erreur ne doivent pas révéler d'informations sensibles qui pourraient aider un attaquant.
- TODO: Assurez-vous que vos messages d'erreurs de connexion ne donnent aucune info aidant des attaquants.
-
Tests de sécurité : Enfin, n'oubliez pas de tester régulièrement votre application pour détecter les vulnérabilités. Vous pouvez utiliser des outils automatisés pour scanner les vulnérabilités de sécurité et effectuer des tests de pénétration pour évaluer la robustesse de votre application. Il existe plusieurs types de tests de sécurité que vous pouvez effectuer pour garantir la sécurité de votre application Vue.js 3. Voici quelques-uns des plus courants :
A. Tests d'intrusion (Penetration Testing) : Ces tests visent à exploiter les vulnérabilités dans votre application pour déterminer où et comment elle pourrait être attaquée par un acteur malveillant. Cela pourrait impliquer le test de différentes formes d'injection, de la manipulation de session, etc. Pen testing pour VueJs
B. Analyse statique du code source (Static Code Analysis) : Il s'agit d'outils qui analysent votre code source à la recherche de modèles de code connus pour être problématiques. Par exemple, ils peuvent chercher des utilisations non sécurisées de certaines fonctions, ou des erreurs courantes qui peuvent introduire des vulnérabilités. Normes d'ESLint
C. Analyse dynamique de l'application (Dynamic Application Security Testing, DAST) : Contrairement à l'analyse statique, les outils DAST analysent votre application en cours d'exécution. Ils recherchent des vulnérabilités courantes comme les injections SQL, les scripts intersites (XSS), etc.
Explication du DAST
D. Revue de code de sécurité : Il s'agit d'un processus par lequel le code est examiné manuellement pour détecter les vulnérabilités de sécurité qui pourraient ne pas être détectées par des outils automatisés.
Quelques outils de revue de code
E. Tests de charge et de stress : Ces tests visent à déterminer la capacité de votre application à gérer de grandes quantités de trafic. Cela peut aider à identifier les points faibles de votre application qui pourraient
Recommandé: Effectuez un test de performance de votre application à l'aide d'outils dans le navigateur à l'aide d'une extension de test.