|
|
|
|
|
- Présentation
- Définir une rubrique de type mot de passe sous l'éditeur d'analyses
- Définir une rubrique de type mot de passe dynamiquement (par programmation)
- Définir une rubrique de type mot de passe via une requête
- Manipuler une rubrique de type Mot de passe
- Comparaisons
Type de rubrique : Mot de passe sécurisé
![HFSQL Classic HFSQL Classic](https://doc.pcsoft.fr/ext/images/fr/HF.png?-2134303037) Disponible uniquement avec ces types de connexion
Le type de rubrique "Mot de passe" permet de stocker un mot de passe de façon sécurisée avec salage et hachage. Le principe est simple : - L'utilisateur fournit un mot de passe sous forme d'une chaîne de caractères.
- Vous affectez cette chaîne de caractères à une rubrique de type "Mot de passe".
- Le moteur HFSQL sécurise ce stockage. Le mot de passe (c'est-à -dire la chaîne de caractères) est salé et haché, et le résultat de ces traitements sera stocké dans le fichier de données.
- Le salage consiste à ajouter à la chaîne de caractères fournie une chaîne aléatoire (le sel).
- Le hachage est ensuite réalisé sur le résultat du salage.
HFSQL stocke uniquement dans le fichier de données : - le sel utilisé pour le salage,
- le résultat du hachage,
- le type d'algorithme utilisé.
Avec ces données stockées, il est impossible de reconstituer la chaîne d'origine. Le stockage est donc sécurisé. Pour vérifier si un mot de passe saisi est correct, il suffit de comparer la valeur saisie au contenu de la rubrique mot de passe. HFSQL va appliquer les mêmes traitements que ceux effectués lors du stockage. HFSQL va ensuite comparer le résultat obtenu au résultat stocké. Pour utiliser ce type de rubrique dans vos projets existants : - dans l'analyse associée à votre projet, modifiez le type de la rubrique qui contient le mot de passe. La rubrique "Texte" devient une rubrique "Mot de passe".
- mettez à jour vos données via la modification automatique des données. La modification automatique des données va saler et hacher la chaîne contenue dans la rubrique.
- modifiez si nécessaire votre code. Pour vérifier la validité d'un mot de passe, il suffit de comparer la rubrique HFSQL à une chaîne de caractères. Le code sera par exemple :
SI SAI_Mdp = IdentificationUtilisateur.Mdp ALORS // Mot de passe correct SINON // Mot de passe incorrect FIN
Définir une rubrique de type mot de passe sous l'éditeur d'analyses Pour créer une rubrique de type Mot de passe dans l'éditeur d'analyses : - Créez une nouvelle rubrique dans la fenêtre de description des rubriques du fichier de données (option "Description des rubriques" du menu contextuel du fichier sous l'éditeur d'analyses).
- Choisissez le type "Mot de passe".
- Indiquez les différents options de la rubrique :
- Algorithme de dérivation, utilisé pour le hachage.
- Algorithme de Hash, utilisé pour le salage.
- Nombre d'itérations : nombre d'itérations de hachage. Il est conseillé d'utiliser une valeur comprise entre 10000 et 30000.
- Taille du résultat (en bits) : Taille de la clé après hachage. La clé (exprimée en bits) doit être un multiple de 8, supérieure à 160 bits et inférieure à 2048 bits. Il est conseillé d’utiliser une clé de 256 ou 512 bits.
- Validez.
Remarque : Ces manipulations peuvent également être réalisées sur une rubrique de type texte existante pour la transformer en rubrique de type "Mot de passe". Définir une rubrique de type mot de passe dynamiquement (par programmation) Pour décrire une rubrique par programmation, il est nécessaire d'utiliser une variable de type "Description de Rubrique". La description d'une rubrique est validée par la fonction HDécritRubrique. Pour décrire une rubrique de type "Mot de passe" : - Déclarez une variable de type Description de Rubrique.
- Utilisez les différentes propriétés permettant de décrire la rubrique (pour plus de détails, consultez Description de Rubrique).
- Utilisez les propriétés spécifiques à la description d'une rubrique de type "Mot de passe" :
- La propriété Type doit correspondre à la constante hRubMotDePasseSécurisé.
- La propriété mdpsDérivation permet de définir l'algorithme de dérivation de clé utilisé pour le hachage.
- La propriété mdpsHash permet de définir l'algorithme utilisé pour le salage.
- La propriété mdpsNombreItération permet de définir le nombre d'itérations de l'algorithme de hachage.
- La propriété mdpsTaille permet de définir la taille de la clé après hachage.
- Validez la description de chaque rubrique (fonction HDécritRubrique).
Définir une rubrique de type mot de passe via une requête Pour définir une rubrique de type mot de passe dans une table via une requête SQL, il est nécessaire d'exécuter une requête de type "ALTER TABLE" avec le paramètre SECUREPASSWORD. Rappel : L'instruction ALTER TABLE permet de créer ou de changer la structure d'une table existante. Exemple : Requête d'ajout d'une rubrique : ALTER TABLE test2 ADD mpdsTest2 SECUREPASSWORD Exemple : Requête de modification du type d'une rubrique : ALTER TABLE test2 ALTER texte TYPE SECUREPASSWORD Manipuler une rubrique de type Mot de passe L'utilisation d'une rubrique de type Mot de passe implique plusieurs spécificités : - Modification automatique des données : Il est possible de transformer une rubrique Texte en rubrique Mot de passe, mais il n'est pas possible de changer le type d'une rubrique Mot de passe.
- NULL est autorisé pour une rubrique de type Mot de passe.
- Une rubrique contenant une chaîne vide ("") sera hachée puis salée.
- Les requêtes sont possibles sur un fichier de données contenant une rubrique Mot de passe. La rubrique est en lecture seule et aucune opération spécifique ne peut être réalisée sur cette rubrique. Sont autorisées les opérations suivantes :
- égalité, différence,
- NULL, COUNT, IN, STRINGDECODE, CASE, NULLIF
- Importation : Il est possible d'importer une chaîne de caractères dans une rubrique Mot de passe depuis les formats JSON, texte, XML et XLS. La chaîne sera automatiquement sécurisée par le hachage plus le salage.
- Exportation :
- Exportation vers les formats CSV, XLS : la rubrique Mot de passe est représentée par la chaîne "*****".
- Exportation vers les formats JSON, XML : la rubrique Mot de passe n'est pas exportée.
- Il n’est pas possible de définir une rubrique mot de passe comme clé (ou index).
- Il n’est pas possible d’afficher la valeur d'une rubrique mot de passe. Dans les tableaux, elle sera automatiquement écrite "*****".
- Les valeurs par défaut sont les suivantes :
- PBKDF2
- SHA2_256
- Nombre d’itérations : 20 000
- Taille du résultat : 256
Comparaisons Une rubrique Mot de passe peut uniquement être comparée à une chaîne de caractères. Il est impossible de comparer une rubrique Mot de passe avec une autre rubrique de Mot de passe. Exemple :
// Comparer une rubrique de type mot de passe avec une chaîne IdentificationUtilisateur.Mdp = "coucou" SI PAS HAjoute(IdentificationUtilisateur) ALORS Trace(HErreurInfo()) FIN  HLitPremier(IdentificationUtilisateur) SI IdentificationUtilisateur.Mdp = "coucou" ALORS Trace("Mot de passe ok") SINON Trace("Mot de passe différent") FIN
Exemple de code ne fonctionnant pas : // On ne peut pas comparer une rubrique // de type mot de passe avec une variable de type mot de passe  oMDPS est un MotDePasseSécurisé oMDPS.Hash = MDPS_SHA2_256 oMDPS.NombreItération = 10000 oMDPS.Taille = 256 oMDPS = "coucou"  IdentificationUtilisateur.Mdp = "coucou" SI PAS HAjoute(IdentificationUtilisateur) ALORS Trace(HErreurInfo()) FIN  HLitPremier(IdentificationUtilisateur) SI IdentificationUtilisateur.Mdp = oMDPS ALORS Trace("Mot de passe ok") SINON Trace("Mot de passe différent") FIN
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|