La bonne façon de nettoyer un mot de passe?
Comment je peux désinfecter une chaîne qui reçoit un hachage+aléatoire de sel?
Je peux supprimer les espaces blancs, vérifiez la longueur et l'utilisation mysqli_real_escape_string, mais c'est suffisant? Le filter_var est vraiment utile, mais il ne peut pas l'aider dans ce cas, non?
- Désinfecter à préparer la chaîne pour quoi exactement?
- dans ce cas, pour vérifier si la table de hachage existe dans la base de données
- Désolé, pas l'obtenir. Vous venez de hachage de l'entrée et de vérifier si le résultat dans la base de données... Ce qu'il ya à désinfecter?
Vous devez vous connecter pour publier un commentaire.
Si vous allez mettre la variable dans une requête SQL, ensuite, soit vous devez appeler
mysqli_read_escape_string
ou (encore mieux!) utilisation les requêtes préparées.Il n'y a pas d'autres assainissement de vous besoin à faire. Toutefois, si la valeur provient de libre entrée de l'utilisateur (par exemple une zone de texte au lieu d'un menu déroulant), vous pouvez aussi couper des espaces minuscules comme une visite de courtoisie à l'utilisateur (à corriger accidentelle des erreurs qu'il pourrait faire). Cela dépend vraiment de l'application.
Juste pour être clair, vous êtes recevoir à partir d'une source de confiance, une table de hachage (efficacement des données aléatoires) + sel (en fait, des données aléatoires), et vous voulez désinfecter' il? Il est probable que la définition de la santé mentale qui s'applique (un format de données comme de l'encodage base64, un maximum /durée prévue), mais je soupçonne fortement il y a une sécurité fonctionnelle erreur quelque part.
Plus particulièrement, pourquoi acceptez-vous une table de hachage+sel à partir d'une source de confiance, plutôt que d'accepter un mot de passe et de procéder à la transformation au sein de votre environnement de confiance? L'acceptation d'un hachage+sel à partir d'une source fiable probablement les transforme en texte brut équivalents (vous perdez l'avantage que vous avez obtenu à partir de fonctions de hachage et de saler le mot de passe d'origine).
Premier valider le mot de passe correspondant à votre compte tenu des règles de validation. Vous pouvez utiliser une expression régulière pour cela. Souvent les mots de passe peuvent cohérent de a-z, 0-9, peut être, des signes de ponctuation et doit être à l'intérieur d'une certaine longueur - dire de 6 à 12 caractères. Utilisation
preg_match()
pour valider la chaîne de son contenu et de la longueur. Quelque chose commepreg_match('/^[a-z0-9]{6,12}$/i',$pass)
pourrait être un début.Ensuite, vous pouvez hacher le mot de passe. Vous pouvez utiliser la fonction
crypt()
de le faire. Cela va créer une chaîne cryptée que vous pouvez utiliser pour comparer plus tard, lorsque l'utilisateur tente de s'authentifier.Enfin, pour stocker le mot de passe, oui à l'aide de
mysqli_real_escape_string()
fera l'affaire pour préparer pour l'utiliser dans votre SQL insert ou update.