Quel est le type de données d’un mot de passe dans PostgreSQL?

J’ai lu qu’il existe des types de données qui font du chiffrement pour que les mots de passe soient sécurisés dans votre firebase database.

J’utilise actuellement varchar pour stocker les mots de passe. J’ai eu l’idée que je devais en quelque sorte appliquer une fonction SHA-512 au mot de passe et mettre ces données à un endroit tel que le mot de passe en texte brut soit supprimé.

Cependant, le type de données dans Perl me suggère qu’il existe un meilleur moyen dans PostgreSQL que varchar.

Quel est le type de données d’un mot de passe dans PostgreSQL?

Jeff a un bon article intitulé Vous stockez probablement les mots de passe de manière incorrecte . Cet article traite des différentes manières de stocker les mots de passe dans les bases de données, ainsi que des pièges courants que vous pouvez rencontrer. En particulier, il traite de l’utilisation d’algorithmes de hachage, de tables arc-en-ciel et de l’utilisation de «salt» pour réduire le risque de fichier de mot de passe compromis.

L’utilisation du type de données varchar convient parfaitement pour stocker un mot de passe correctement haché. Par exemple, voici une partie de mon enregistrement de compte réel à partir d’une firebase database de production:

  => select account_id, email, salt, passhash depuis le compte où email = 'greg@hewgill.com';
  account_id |  email |  sel |  passhash                 
 ------------ + ------------------ + ------------------ + ------------------------------------------
           1 |  greg@hewgill.com |  GFR9uT4N4Tzl3vnK |  2c2bf00079a6d49a8f7fb17cefb52fdb41a4b043
 (1 rangée)

Dans ce cas, passhash est la représentation hexadécimale du SHA-1 du sel concaténé avec mon mot de passe.

Installer “module chkpass”

Ce module implémente un chkpass de type de données conçu pour stocker des mots de passe chiffrés. Vous devez installer le package de consortingbution postgresql et exécuter la commande CREATE EXTENSION pour installer.

Dans Ubuntu 12.04, cela irait comme ceci:

 sudo apt-get install postgresql-consortingb 

Redémarrez le serveur postgresql:

 sudo /etc/init.d/postgresql restart 

Toutes les extensions disponibles sont dans:

 /opt/PostgreSQL/9.5/share/postgresql/extension/ 

Vous pouvez maintenant exécuter la commande CREATE EXTENSION.

Exemple:

 CREATE EXTENSION chkpass; CREATE TABLE accounts (username varchar(100), password chkpass); INSERT INTO accounts(username, "password") VALUES ('user1', 'pass1'); INSERT INTO accounts(username, "password") VALUES ('user2', 'pass2'); select * from accounts where password='pass2'; 

Résultats

 username | password --------------------------- "user2" | ":Sy8pO3795PW/k" 

La version 9.4+ de Postgres peut être réalisée de manière plus intelligente et sécurisée en utilisant l’extension pgcrypto, comme expliqué sur: http://www.meetspaceapp.com/2016/04/12/passwords-postgresql-pgcrypto.html