8 Funciones PHP sobre Criptografia y Seguridad

Las siguientes 8 funciones de PHP sobre seguridad muy utiles para nuestras apps, ayudan a generar hash, comprobar contraseñas, generar bytes y mas.

PHP cuenta con funciones integradas en el lenguaje para ayudarnos a hacer ciertas tareas que son basicas o necesarias en todos los lenguajes de programacion, en este articulo vamos a ver funciones relacionadas al ambito de la seguridad y criptografia.

Son 8 funciones que estan dentro del lenguaje y claro les dejo un ejemplo de cada una.

Funcion password_hash

La primera funciones seria password_hash() , cuando hablamos de contraseñas en una base de datos no almacenamos en texto plano, en su lugar guardamos un hash.

<?php
// Contraseña en texto plano
$plaintext_password = "secureP@ss123";
// Generar un hash seguro usando el algoritmo predeterminado (bcrypt)
$hash = password_hash($plaintext_password, PASSWORD_DEFAULT);
// Almacenar el $hash en tu base de datos (asegúrate de que la columna pueda contener al menos 255 caracteres)
echo "Generated hash: " . $hash; 
?>

La funcion password hash recibe un texto y devuelve un hash mediante un algoritmo de encriptacion.

Funcion password_verify

La funcion password_verify recibe 2 parametros primero el texto plano y segundo el hash que tenemos almacenado.

Si el hash del texto coincide con el hash almacenado, entonces el resultado es correcto.

<?php
if (password_verify('admin123', $hash)) {
    echo 'La contraseña es válida !';
} else {
    echo 'La contraseña es inválida.';
}
?>

Funcion random_bytes

La funcion random_bytes() recibe como parametro el numero de bytes y devuelve una cadena de caracteres o bytes generados aleatoriamente con algoritmos seguros, asi podemos usar el resultado de random_bytes() para generar tokens seguros.

El resultado de random_bytes(8) genera 8 bytes que si los imprimimos normalmente van a salir caracteres de bytes/binarios, para mostrar el contenido usamos la funcion bin2_hex(bytes).

Funcion bin2hex

La funcion bin2hex(bytes) recibe como parametro una variables con bytes y los va a devolver en formato hexadecimal.

<?php
$bytes = random_bytes(4);
$data =    bin2hex($bytes);
echo ''. $data .'';
?>

Funcion hex2bin

La funcion hex2bin(hex) va a recibir valores hexadecima y los va a devolver en binarios o ascii.

<?php
$hex = "48656c6c6f";
echo hex2bin($hex); // Resultado: Hello
?>

Funcion filter_var

Esta funcion filter_var sirve para validar y sanitizar strings o una variables utilizando ciertos filtros especificos.

Por ejemplo para validad si un correo electronico es correcto.

<?php
$email = "agustin@mail.com";
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "Email correcto";
} else {
    echo "Email incorrecto";
}
?>

Tambien sirve para sanitizar o limpiar una variable o string que contenga datos que no queremos, un caso muy importante en temas de seguridad, que una variable no contenga datos o etiquetas HTML que puedan provocar un ataque XSS.

<?php
$micomentario = "<h1>Hola</h1><script>alert('mundo!')</script>";
$varlimpia = filter_var($micomentario, FILTER_SANITIZE_STRING);
echo $varlimpia; // Resultado: Holaalert('mundo!')
?>

Funcion htmlespecialchars

htmlespecialchars convierte los caracteres especiales en entidades HTML codificadas, es decir convierte los simbolos como < y > en simbolos que se pueden mostrar sin que se conviertan en HTML real, por ejemplo se convierten en &lt; y &gt; asi los podemos guardar en la base de datos y al imprimirlos no se van a ejecutar como HTML.

<?php
$micomentario = "<script>alert('hola mundo!');</script>";
// Seguro para mostrar en el navegador
$save = htmlspecialchars($micomentario, ENT_QUOTES, 'UTF-8');
// Salida: &lt;script&gt;alert(&#039;hola mundo&#039;);&lt;/script&gt;
?>

Funcion htmlespecialchars_decode

La funcion htmlespecialchars_decode recibe como parametros entidades HTML codificadas y las convierte en caracteres originales, y ahora si el texto HTML tiene funciones reales.

<?php
$save = "&lt;script&gt;alert(&#039;hola mundo&#039;);&lt;/script&gt;";
echo htmlspecialchars_decode($save2); // Resultado una alerta de verdad imprimiendo hola mundo
?>

Si quieren ver mas sobre php les invito a PHP Stuffs

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Evilnapsis

Subscribe now to keep reading and get access to the full archive.

Continue reading