Cet article partage principalement avec vous des exemples sur la façon d'implémenter le cryptage des mots de passe en PHP. En raison de l'algorithme de hachage rapide, il n'est pas recommandé d'utiliser la fonction md5
pour obtenir des mots de passe. génère suffisamment de valeur de sel forte et prendra automatiquement les tours appropriés. password_hash() est un simple wrapper autour de crypt() et est entièrement compatible avec les hachages de mots de passe existants. Il est donc recommandé d'utiliser password_hash().
string password_hash ( string $password , integer $algo [, array $options ] )
boolean password_verify ( string $password , string $hash )
Exemple :
<?php$hash = password_hash("rasmuslerdorf", PASSWORD_DEFAULT); if (password_verify('rasmuslerdorf', $hash)) { echo 'Password is valid!'; } else { echo 'Invalid password.'; }
Ne définissez pas vous-même la valeur du sel lors de la création d'un mot de passe
Raison : Il est fortement recommandé de ne pas générer vous-même la valeur du sel (salt) pour cette fonction. Tant qu'il n'est pas réglé, il créera automatiquement une valeur de sel sûre. Comme mentionné ci-dessus, fournir l'option salt dans PHP 7.0 entraîne un avertissement de dépréciation. La possibilité de fournir manuellement des valeurs de sel pourrait être supprimée dans les futures versions de PHP.
Effectuez des tests de référence sur votre propre serveur et ajustez le paramètre de coût jusqu'à ce que la surcharge de temps de fonction soit inférieure à 100 millisecondes (millisecondes).
Exemple :
<?php/** * 这个例子对服务器做了基准测试(benchmark),检测服务器能承受多高的 cost * 在不明显拖慢服务器的情况下可以设置最高的值 * 8-10 是个不错的底线,在服务器够快的情况下,越高越好。 * 以下代码目标为 ≤ 100 毫秒(milliseconds), * 适合系统处理交互登录。 */$timeTarget = 0.1; // 100 毫秒(milliseconds) $cost = 8;do { $cost++; $start = microtime(true); password_hash("test", PASSWORD_BCRYPT, ["cost" => $cost]); $end = microtime(true); } while (($end - $start) < $timeTarget); echo "Appropriate Cost Found: " . $cost;
Résultat :
Appropriate Cost Found: 10
Recommandations associées :
analyse de l'algorithme de cryptage du mot de passe utilisateur php
Plusieurs méthodes de cryptage de mot de passe dans les exemples PHP_php
Le cryptage de mot de passe PHP est lent
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!