• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 22/07/2022

Protégez les données stockées sur une application

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Dans le chapitre précédent, nous avons parlé de la sécurisation des données lors de leur transmission.

Mais où sont stockées les données et comment les protéger ?

Lorsque vous visitez un site web et que vous entrez des données dans un formulaire, comme un nom d’utilisateur et un mot de passe, ces données sont ensuite envoyées et une requête sur la base de données est effectuée, pour vérifier que l’utilisateur existe et que le mot de passe entré est le bon. S’ils correspondent, le serveur vous donne accès à vos données stockées sur la base de données.

Les données stockées sont donc le contenu de la base de données. Typiquement, une base de données contiendra des données sensibles sur un site qui nécessite une authentification.

Nous savons comment effectuer des requêtes dans la base de données afin de prévenir les modifications non autorisées et l'exposition de la base de données. Mais si un attaquant arrive à contourner l’authentification, comment pouvons-nous restreindre son accès aux données ?

Pour cela, il existe un moyen sûr, le chiffrement des données.

Découvrez les algorithmes de hachage

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 password123. Nous allons utiliser un algorithme de hachage pour obtenir une empreinte.

Dans notre exemple, nous allons utiliser les algorithmes de hachage SHA1 et MD5. Nous obtenons l'empreinte suivante :

sha1:bab1298d948ebb34bd0f3faf5e596ebc0b27c615
md5:7576f3a00f6de47b0c72c5baf2d505b0

La chaîne de caractères password123est désormais stockée sous la forme d'un hash MD5, rendant sa lecture impossible pour un utilisateur malveillant.

Cependant, certains attaquants réussiront tout de même à contourner ce mécanisme. Comme pour les cookies, il est possible d’effectuer une attaque par rainbow table, c’est-à-dire qu’un attaquant va préalablement calculer des hash de mots de passe puis les utiliser avec une attaque de brute force pour trouver le bon.

Comme pour l'authentification, il est possible de contourner cette attaque en utilisant le salage.

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 un des algorithmes de hachage les plus puissants et fortement recommandés par l'OWASP

Sécurisez une base de données

Gérez l'authentification

Pour sécuriser l’authentification, il existe de bonnes pratiques de sécurité simples à appliquer :

  • supprimer les comptes par défaut en changeant les mots de passe connus ;

  • utiliser le principe de moindre privilège pour vous assurer qu'un ou deux comptes seulement ont des privilèges élevés.

Cachez des données sensibles dans une base de données

Il existe plusieurs techniques qui permettent de cacher les données sensibles d’une base de données et donc de sécuriser une application.

  • L'anonymisation est une technique recommandée par l’OWASP pour cacher des données privées en chiffrant, brouillant et supprimant des parties des données. Par exemple, si une demande est faite pour la date de naissance d'une personne pour s’authentifier, seule l'année sera fournie par la base de données.

  • La pseudonymisation est une technique recommandée par le RGPD. Elle remplace les données personnelles par des identifiants et des pseudonymes artificiels pour cacher les données sensibles.

  • La minimisation des données permet de se conformer à l'ensemble de règles du RGPD. L'entreprise doit uniquement demander, enregistrer et traiter les données personnelles requises. En d'autres termes, toute donnée personnelle demandée doit avoir un motif commercial solide.

Il existe deux façons d'appliquer ces techniques à votre base de données.

  • Le masquage dynamique des données est un moyen d'appliquer des règles d'anonymisation sur les colonnes de données sensibles. Lorsqu'une demande est faite pour récupérer les données des colonnes masquées, elle n'apparaîtra pas dans sa forme complète. Ces données peuvent également être cachées aux administrateurs de bases de données avec des rôles qui bloquent l'accès aux données sensibles.

Sur SQL Server, l'option masked with applique différentes fonctions de masquage. L’option par défaut prend la valeur sensible et la remplace par une autre valeur lorsqu'elle est affichée. L'exemple ci-dessous montre son application sur une colonne Date de naissance.

Birthdate DATE
MASKED WITH (FUNCTION = 'default()') NOT NULL,

MongoDB a la possibilité d'utiliser un module appelé Mongo Mask. Il peut être utilisé comme ceci sur l’application : var mongoMask = require('mongo-mask'). Sur la base de données, MongoDB a des accès en lecture seule qui peuvent être spécifiés dans le code. 

  • Cloner et générer des masques de données utilisant plusieurs bases de données. En utilisant le même schéma, une base de données supplémentaire utilisée pour récupérer des informations peut contenir des données masquées pour les colonnes sensibles déjà présentes.

SQL Server, SQL Clone et SQL Data Generator peuvent être utilisés pour créer une autre base de données avec des données générées pour masquer les données sensibles lors de leur récupération. Contrairement au masquage dynamique des données, il ne s'agit pas d'un masquage actif. Il s'agit d'une redirection de requête vers une autre base de données avec des données générées pour remplacer les données sensibles.

En résumé

  • Sécurisez votre base de données avec le chiffrement.

  • Utilisez des algorithmes de hachage sécurisés tels que Argon2, Scrypt, Bcrypt et PBKDF2.

  • Utilisez pas les algorithmes de hachage SHA et MD5 avec salage.

  • Les tables Rainbow automatisent les connexions avec des mots de passe préhashés !

  • Le masquage des données peut être utilisé pour sécuriser les données sensibles d’une base de données.

Nous venons de voir comment sécuriser les données stockées dans votre application. Dans le prochain chapitre, nous verrons comment sécuriser les contrôles d’accès.

Exemple de certificat de réussite
Exemple de certificat de réussite