Meilleures Pratiques: le Salage & parsemant les mots de passe?

Je suis tombé sur une discussion dans laquelle j'ai appris que ce que j'avais fait n'était pas en fait le salage des mots de passe, mais émaillant eux, et depuis, j'ai commencé à faire les deux avec une fonction comme:

hash_function($salt.hash_function($pepper.$password)) [multiple iterations]

Ignorant la choisi l'algorithme de hachage (je veux que ce soit une discussion de sels & poivrons et pas des algorithmes spécifiques, mais je suis en utilisant un sécurisée), est-ce une option sécuritaire, ou devrais-je faire quelque chose de différent? Pour ceux peu familiers avec les termes:

  • Un sel est généré de façon aléatoire une valeur habituellement stockés par la chaîne de caractères dans la base de données conçu pour rendre impossible l'utilisation des tables de hachage pour craquer des mots de passe. Que chaque mot a son propre sel, ils doivent tous être brute forcé individuellement afin de les casser; cependant, comme le sel est stocké dans la base de données avec le hash du mot de passe, une base de données de compromis, c'est perdre les deux.

  • Un poivre est un site statique de la valeur stockée séparément à partir de la base de données (généralement codé en dur dans l'application du code source) qui est destiné à être secret. Il est utilisé de sorte qu'un compromis de la base de données n'entraînerait pas la totalité de la demande du mot de passe de la table pour être brute forceable.

Est-ce que je suis en manque et c'est le salage & parsemant mon mots de passe de la meilleure option pour protéger mon de sécurité de l'utilisateur? Est-il un potentiel d'une faille de sécurité à le faire de cette façon?

Remarque: Supposons pour les besoins de la discussion que l'application & base de données sont stockés sur des machines distinctes, ne pas partager les mots de passe etc. donc une violation du serveur de base de données ne signifie pas automatiquement une violation de l'application serveur.