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 < y > 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: <script>alert('hola mundo');</script>
?>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 = "<script>alert('hola mundo');</script>"; echo htmlspecialchars_decode($save2); // Resultado una alerta de verdad imprimiendo hola mundo ?>
Si quieren ver mas sobre php les invito a PHP Stuffs