me ha gustado la respuesta de r3bel, así que tenía un juego con él y terminó con la siguiente función de contraseña de comprobación:
function password_strength_check($password, $min_len = 8, $max_len = 70, $req_digit = 1, $req_lower = 1, $req_upper = 1, $req_symbol = 1) {
// Build regex string depending on requirements for the password
$regex = '/^';
if ($req_digit == 1) { $regex .= '(?=.*\d)'; } // Match at least 1 digit
if ($req_lower == 1) { $regex .= '(?=.*[a-z])'; } // Match at least 1 lowercase letter
if ($req_upper == 1) { $regex .= '(?=.*[A-Z])'; } // Match at least 1 uppercase letter
if ($req_symbol == 1) { $regex .= '(?=.*[^a-zA-Z\d])'; } // Match at least 1 character that is none of the above
$regex .= '.{' . $min_len . ',' . $max_len . '}$/';
if(preg_match($regex, $password)) {
return TRUE;
} else {
return FALSE;
}
}
longitudes Max/Min son predeterminado o ajustable, cada requerimiento está preprogramado, pero puede apagarse, y yo quería admitir cualquier símbolo, por lo que el último requisito es "cualquier cosa que no sea uno de los tipos anteriores", en lugar de un conjunto fijo de símbolos.
por favor considere permitir contraseñas más largas, prefiero que el mío tenga más de 20 caracteres, y no le hará daño permitir esto. No entiendo los sitios que tienen una longitud máxima; los almacena en hash, ¿cuál es el problema? –
@Dragon Aumenté el máximo de 50 caracteres. Es un sitio simple y creo que solo estaba pensando en 8-12 caracteres que sería más fácil de recordar para las personas y menos probable que necesiten restablecer su contraseña. Pero como dijiste, con la contraseña cifrada, realmente no es tan importante. –
dejo que lastpass recuerde todas mis contraseñas para mí :-) –