En este artículo vamos a aprender cómo verificar la seguridad de una contraseña con PHP. En concreto, veremos el nivel de seguridad de una contraseña que ingrese el usuario mediante un formulario bastante simple. Para lograrlo, crearemos nuestra propia función de verificación la cual llamaremos desde un archivo de proceso.
Lo primero que debemos realizar es crear el formulario el cual se encargará de pedirle la información necesaria al usuario. En este caso será la contraseña y un botón de envío de formulario. Es importante darle extensión .php a este archivo pues también se encargará de procesar y ejecutar el script PHP que estaremos creando nosotros:
<html> <body> <form action="" method="POST"> <p>Clave:</p> <p><input type="password" name="clave"></p> <p><input type="submit" name="enviar" value="Verificar"></p> </form> </body> </html>
El formulario se debería ver de la siguiente forma:
Ahora crearemos la estructura PHP para que pueda recolectar la información enviada desde el formulario y que guarde la contraseña enviada en una variable llamada $clave. Esto será logrado de la siguiente forma:
<?php if(isset($_POST["enviar"])) { $clave = $_POST["clave"]; } ?>
Debemos notar que éste código irá al comienzo del archivo creado anteriormente. Ahora únicamente hace falta crear nuestra función de verificación de seguridad de una contraseña. Esta función se llamará verificar_seguridad_clave y tomará como parámetro la contraseña que el usuario ingresó. Devolverá el nivel de seguridad de aquella contraseña. Este valor devuelto será un número entre 1 y 100. Mientras más cerca se encuentre al número 100, la contraseña será más segura.
El código de la función será el siguiente:
function verificar_seguridad_clave($string){ $h = 0; $size = strlen($string); foreach(count_chars($string, 1) as $v){ $p = $v / $size; $h -= $p * log($p) / log(2); } $strength = ($h / 4) * 100; if($strength > 100){ $strength = 100; } return $strength; }
Por último, únicamente faltaría llamar a aquella función con la clave que tenemos e imprimir el resultado. Aquello se puede realizar de la siguiente forma:
echo "Seguridad de la clave: " . verificar_seguridad_clave($clave);
El código completo sería el siguiente:
<?php if(isset($_POST["enviar"])) { $clave = $_POST["clave"]; echo "Seguridad de la clave: " . verificar_seguridad_clave($clave); } function verificar_seguridad_clave($string){ $h = 0; $size = strlen($string); foreach(count_chars($string, 1) as $v){ $p = $v / $size; $h -= $p * log($p) / log(2); } $strength = ($h / 4) * 100; if($strength > 100){ $strength = 100; } return $strength; } ?> <html> <body> <form action="" method="POST"> <p>Clave:</p> <p><input type="password" name="clave"></p> <p><input type="submit" name="enviar" value="Verificar"></p> </form> </body> </html>
En caso todo se encuentre correcto, debemos obtener un resultado similar al siguiente: