L'exposition des données sensibles est, depuis la mise à jour de 2021, la seconde vulnérabilité dans le top 10 de l’OWASP. Ce changement de position montre qu’il est toujours extrêmement important que les données stockées et transmises dans l’application respectent les bonnes pratiques de sécurité. Dans ce chapitre, nous aborderons la sécurisation des données, aussi bien celles qui sont échangées que les données stockées.
La cryptographie est aujourd’hui un des moyens les plus sûrs pour protéger vos données privées. Que ce soit des données stockées, dans des bases ou sur une partition, ou des données en transit.
Lorsque vous avez une clé à créer, vous allez utiliser un générateur, comme celui implémenté dans OpenSSL. Celui-ci pourrait, par exemple, utiliser un générateur de nombre aléatoire interne, là où d'autres vont se baser par exemple sur les mouvements de la souris. Imaginez maintenant que ce nombre aléatoire devient prédictible ? Vous obtenez un risque de sécurité identique à celui d’OpenSSL dans la CVE CVE-2008-0166. Une vulnérabilité qui permet à un attaquant de procéder à une attaque de type brute force en réduisant considérablement la durée de l’attaque.
Découvrez comment les données transitent la couche de transport
Lorsque vous surfez sur Internet, votre navigateur utilise le protocole HTTP (Hypertext Transfer Protocol) pour afficher les pages web et le protocole Transmission Control Protocol/Internet Protocol (TCP/IP) pour les transmettre.
OK. Imaginons que vous tapez une URL dans votre barre de navigateur et que vous cliquez sur Entrée.
Votre navigateur va lancer une connexion TCP, qui va envoyer des requêtes GET et POST pour vous connecter au serveur web associé au nom de domaine ou à l'adresse IP.
Si le serveur web établit la connexion TCP avec le navigateur, une réponse avec le code statut et le fichier demandé (généralement le fichierindex.html
pour la page web) sera transmise. Mais dans le cas d’une navigation non sécurisée, les données transitent en HTTP et pas en HTTPS…
Ceci nous amène à la première vulnérabilité. Les données transitant en HTTP peuvent être interceptées, car elles transitent en clair.
Mais alors… Comment un utilisateur malveillant peut avoir accès à cette connexion TCP ?
Justement, voyons cela…
Comprenez l’attaque de l’homme du milieu (MITM)
L'attaque de l'Homme du Milieu (Man in the Middle, en anglais) est l'une des principales causes de détournement de session. L'attaquant se place au milieu de votre communication, intercepte les connexions réseau et capte ainsi tout ce que vous envoyez.

Le vol de données et le détournement de session ne sont que quelques exemples de ce qu'un attaquant peut faire une fois sur le réseau. D'une façon ou d'une autre, si les données sont envoyées en HTTP et sont en clair, il suffit de peu d'efforts pour interpréter les données.
Mais… Comment je peux résoudre ce problème ?
C’est HTTPS qui va nous aider !
Utilisez HTTPS pour sécuriser les données en transit
Attendez… C'est quoi exactement, HTTPS ?
HTTPS est la variante sécurisée de HTTP qui utilise les protocoles Secure Sockets Layer/Transport Layer Security (SSL/TLS) pour chiffrer les transmissions.
Cela permet d'ajouter une couche de sécurité lorsque les données sont en transit.
En règle générale, si vous devez vous authentifier avec un mot de passe n'importe où sur le site, utilisez HTTPS pour protéger le mot de passe lorsqu'il est transmis sur le réseau.
Comment utiliser le protocole TLS pour sécuriser une application ?
Tout d'abord, obtenez un certificat SSL et ajoutez-le à votre serveur. Ce certificat est nécessaire pour chiffrer les données en cours de transmission.
L’obtention d’un certificat gratuit est possible avec l’autorité de certification Let’s Encrypt, qui délivre des certificats de manière automatisée, et permet ainsi de simplifier le processus de passage en HTTPS pour les entreprises comme pour les particuliers.
Ensuite, configurez votre site pour utiliser de l'HTTPS.
Découvrez les algorithmes de hachage pour sécuriser des données d’authentification
Pour protéger certaines données stockées sur une application, il est possible d’utiliser des algorithmes de hachage.
L'intérêt des algorithmes de hachage est qu’ils permettent de calculer une empreinte (ou hash) d’une chaîne de caractères par exemple. Cette empreinte est utile pour éviter de stocker en clair le mot de passe dans la base de données.
Prenons un exemple. Nous avons une chaîne de caractères “Mon Mot 2 passe Privé”. Nous allons utiliser un algorithme de hachage pour obtenir une empreinte.
Dans notre exemple, nous allons utiliser les algorithmes de hachage SHA256 et MD5. Nous obtenons l'empreinte suivante :
sha256:c589bd301b83658a4fc46a2a4eb330f3d6d7305fed29daa80f68e539526f5bd1
PBKDF2:5ea84557540a3b15310ab3d411a58f89
La chaîne de caractères “Mon Mot 2 passe Privé” est désormais stockée sous la forme d'un hash PBKDF2, rendant sa lecture impossible pour un utilisateur malveillant.
Cependant, certains attaquants réussiront tout de même à contourner ce mécanisme. Il est possible d’effectuer une attaque par brute force, tables de hachage précalculées ou par rainbow table.
Pour éviter ce genre d’attaque, il est possible d’ajouter un sel permettant de joindre une donnée supplémentaire, et ainsi renforcer la sécurité.
Un sel est une séquence aléatoire utilisée en plus du chiffrement pour rendre le hachage imprévisible.
Mais comment faire ?
Tout d'abord, vous allez créer un objet pour l'algorithme de chiffrement et le saler.
Le salage est une méthode permettant de renforcer la sécurité des informations qui sont destinées à être hachées (par exemple des mots de passe) en y ajoutant une donnée supplémentaire afin d’empêcher que deux informations identiques conduisent à la même empreinte (au même hash). Le but du salage est de lutter contre plusieurs types d’attaques :
les attaques fréquentielles (permettant l’analyse des fréquences des caractères employés) ;
les attaques utilisant des rainbow tables ;
les attaques par dictionnaire ;
les attaques par force brute.
Quel que soit le langage dans lequel vous développez, il existe plusieurs solutions qui peuvent vous permettre de sécuriser votre mécanisme d'authentification !
Sachez qu'il existe de nombreux algorithmes de hachage : Bcrypt, Scrypt, SHA, MD5, Argon2 et PBKDF2 par exemple. Contrairement aux algorithmes SHA et MD5, Argon2, PBKDF2, Bcrypt et Scrypt sont plus axés sur la sécurité que sur l'efficacité. Cela signifie que le cassage de ces algorithmes exige plus de ressources.
Argon2 est l’un des algorithmes de hachage les plus puissants et fortement recommandés par l'OWASP.
A contrario, il est très fortement recommandé de ne plus utiliser les algorithmes md5 et sha1, ceux-ci n’étant plus considérés comme sécurisés.
De son côté, l’Anssi recommande des algorithmes de hachage sha2 ou sha3, de 256 bits minimum pour la vérification de l’intégrité des fichiers, et l’algorithme PBKDF2 pour le hachage de mots de passe.
La liste de ces recommandations de l’Anssi peut être consultée dans le document accessible à ce lien.
En résumé
Utilisez le HTTPS pour l'ensemble de votre site, même s'il ne contient pas de données sensibles.
L'utilisation du chiffrement dans la couche Transport peut prévenir les attaques MITM !
L’utilisation d’un algorithme de hachage fort est essentielle pour protéger vos données.
Dans la mesure du possible, utilisez toujours un salage avec votre algorithme de chiffrement.
Une donnée chiffrée est récupérable, une donnée hachée ne l’est pas.
Nous venons de voir comment protéger les données sensibles. Dans le prochain chapitre, nous verrons comment vous protéger contre les injections et les failles XSS.