Red de conocimiento informático - Material del sitio web - Cómo utilizar el cifrado MySQL para proteger datos confidenciales en su sitio web

Cómo utilizar el cifrado MySQL para proteger datos confidenciales en su sitio web

Si está ejecutando una aplicación web que usa MySQL, es muy probable que esté guardando contraseñas u otra información confidencial dentro de la aplicación. Proteger estos datos de piratas informáticos o fisgones es su principal preocupación porque no puede permitir que personas no autorizadas utilicen o comprometan la aplicación, al mismo tiempo que garantiza su ventaja competitiva. Suerte

Si estás ejecutando una aplicación web que utiliza MySQL, es muy probable que esté almacenando contraseñas u otra información confidencial dentro de la aplicación. Proteger estos datos de piratas informáticos o fisgones es su principal preocupación porque no puede permitir que personas no autorizadas utilicen o comprometan sus aplicaciones mientras le brindan una ventaja competitiva. Afortunadamente, MySQL proporciona una serie de funciones criptográficas diseñadas para proporcionar este tipo de seguridad. Este artículo proporciona una descripción general de algunas de estas funciones y explica cómo usarlas y los diferentes niveles de seguridad que pueden proporcionar.

Cifrado bidireccional

Comencemos con el cifrado más simple: el cifrado bidireccional. Aquí, un dato se cifra utilizando una clave que solo puede ser descifrada por alguien que conoce la clave. MySQL tiene dos funciones que soportan este tipo de cifrado, llamadas ENCODE() y DECODE(). Aquí hay un ejemplo simple:

mysqlgt; INSERT INTO usuarios (nombre de usuario, contraseña) VALUES ('joe', ENCODE('guessme', 'abracadabra'));

Consulta OK , 1 registro afectado (0,14 segundos)

Entre ellos, la contraseña de Joe es adivina, que está cifrada con la clave abracadabra. Tenga en cuenta que el resultado del cifrado es una cadena binaria como sigue:

mysqlgt; SELECT * FROM usuarios WHERE nombre de usuario='joe'

-------- -- ----------

|nombre de usuario | contraseña |

---------- --------- -

| joe | ?yo?!!?|

---------- ----------

1 fila en conjunto (0,02 segundos)

abracadabra Esta clave es esencial para restaurar la cadena original. Esta clave debe pasarse a la función DECODE() para obtener la contraseña original sin cifrar. Aquí se explica cómo usarlo:

mysqlgt; SELECCIONE DECODE(contraseña, 'abracadabra') DESDE los usuarios DONDE nombre de usuario='joe';

--------- - -------------------- ---

| DECODE(contraseña, 'abracadabra') |

-- - ------------------------------

| adivina |

-- - ----------------- ------------

Hay 1 filas en la colección (0,00 segundos)

¿Debería ser fácil ver cómo funciona esto en una aplicación web? Al validar el inicio de sesión de un usuario, DECODE() utiliza una clave específica del sitio para desbloquear la contraseña almacenada en la base de datos y la compara con lo que escribió el usuario.

Suponiendo que está utilizando PHP como lenguaje de programación, la consulta se puede realizar de esta manera:

$query = "SELECT COUNT(*) FROM users WHERE nombre de usuario='$inputUser' AND DECODE(contraseña, 'abracadabra ') = ' $inputPass'";? gt;

Consejo: Aunque las funciones ENCODE() y DECODE() cumplen con la mayoría de los requisitos, a veces es necesario utilizar un cifrado más seguro. En este caso, puede utilizar las funciones AES_ENCRYPT() y AES_DECRYPT(), que funcionan de la misma manera pero tienen capacidades de cifrado más potentes.