Architecture sécurisée de Rodauth : mécanismes de protection des fonctions de base de données et du hachage des mots de passe

Principe de sécurité par la base de données

Contrairement à d'autres solutions, Rodauth déporte la logique de validation des identifiants directement dans la base de données. Ce positionnement minimise la surface d'attaque : le code applicatif ne manipule jamais directement les hachages de mots de passe, même en cas de compromission du serveur d'application.

Fonctions d'authentification intégrées

Avec des bases de données comme PostgreSQL, MySQL ou Micorsoft SQL Server, Rodauth active par défaut la validation via des fonctions dédiées. Deux fonctions clés sont créées lors des migrations :

  • rodauth_obtenir_sel() : extrait de manière sécurisée la composante "sel" du hachage stocké.
  • rodauth_hash_mot_de_passe_valide() : effectue la comparaison directement dans le moteur de base de données.

Algorithmes de hachage supportés

Le cadre prend en charge des algorithmes standards de l'industrie ainsi que des solutions modernes :

  • Bcrypt : algorithme reconnu avec un facteur de coût ajustable.
  • Argon2 : algorithme conçu pour résister aux attaques par canaux auxiliaires et au calcul massif par GPU/ASIC, grâce à sa résistance en mémoire.

Les meilleures pratiques implémentées incluent la séparation du stockage du sel, la configuration de la complexité via des paramètres de coût et l'utilisation de comparaisons en temps constant pour prévenir les attaques chronométriques.

Compatibilité multi-bases de données

SGBD Implémentation Caractéristique de sécurité
PostgreSQL Fonctions PL/pgSQL Privilèges SECURITY DEFINER
MySQL Fonctions stockées Clause SQL SECURITY DEFINER
Microsoft SQL Server Fonctions T-SQL Exécution WITH EXECUTE AS OWNER

Configuration et activation

L'activation des fonctions d'authentification de base de données se fait via une simple option de configuration :

# Dans le bloc de configuration de Rodauth
use_database_authentication_functions? true

Pour supporter l'algorithme Argon2 au niveau de la base de données, les fonctions nécessaires peuvent être générées :

Rodauth.creer_fonctions_auth_db(DB, algorithme: :argon2)

Protection contre la réutilisation des mots de passe

Lorsque l'option interdire_reutilisation_mot_de_passe est activée, Rodauth vérifie qu'un nouveau mot de passe ne correspond pas à un historique récent. Cette vérification d'historique est également réalisée via des fonctions de base de données, garantissant que tous les hachages conservés bénéficient du même niveau de protection.

Avantages architecturaux

Cette approche centralisée dans la base de données procure plusieurs bénéfices concrets :

  • Facilite la conformité aux réglementations strictes (RGPD, PCI DSS).
  • Offre une piste d'audit complète au niveau des données.
  • Réduit les risques liés aux fuites de données entre les couches applicatives.
  • Maintient des performances optimales même à grande échelle.

Cette architecture place la sécurité des identifiants au niveau le plus bas possible du système, constituant une fondation solide pour des applications critiques.

Étiquettes: Rodauth Ruby Authentification Sécurité base de données

Publié le 22 juin à 16h57