Modelo de Almacenamiento Encriptado

SSL/SSH protege los datos que viajan desde el cliente al servidor, SSL/SSH no protege los datos persistentes almacenados en la base de datos. SSL es un protocolo sobre-el-cable.

Una vez el atacante adquiere acceso directo a su base de datos (evitando el paso por el servidor web), los datos críticos almacenados pueden estar expuestos o malutilizados, a menos que la información esté protegida en la base de datos misma. La encriptación de datos es una buena forma de mitigar esta amenaza, pero muy pocas bases de datos ofrecen este tipo de mecanismo de encriptación de datos.

La forma más sencilla de evitar este problema es crear primero su propio paquete de encriptación, y luego utilizarlo desde sus scripts de PHP. PHP puede ayudarle en este sentido con varias extensiones, como Mcrypt y Mhash, las cuales cubren una amplia variedad de algoritmos de encriptación. El script encripta los datos antes de insertarlos en la base de datos, y los decripta cuando los recupera. Vea las referencias para consultar más ejemplos de cómo opera la encriptación.

En el caso de datos realmente escondidos, si su representación original no se necesita (es decir, no debe ser desplegada), los resúmenes criptográficos pueden llegar a considerarse también. El ejemplo clásico de gestión de resúmenes criptográficos es el almacenamiento de secuencias MD5 de una contraseña en una base de datos, en lugar de la contraseña misma. Vea también crypt() y md5().
Ejemplo 27-1. Uso de un campo de contraseñas encriptado
<?php
// almacenamiento de resumen criptografico de la contrasenya$consulta  sprintf("INSERT INTO usuarios(nombre,contr) VALUES('%s','%s');",
                     
addslashes($nombre_usuario), md5($contrasenya));$resultado pg_query($conexion$consulta);

// consulta de verificacion de la contrasenya enviada$consulta  sprintf("SELECT 1 FROM usuarios WHERE nombre='%s' AND contr='%s';",
                     
addslashes($nombre_usuario), md5($contrasenya));$resultado pg_query($conexion$consulta);

if (
pg_num_rows($resultado) > 0) {
    echo 
'&iexcl;Bienvenido, $nombre_usuario!';
}
else {
    echo 
'No pudo autenticarse a $nombre_usuario.';
}
?>

No response to “Modelo de Almacenamiento Encriptado”