Вы находитесь на странице: 1из 2

http://www.solingest.

com/blog/almacenar-contrasenas-en-mysql

Almacenar contraseas en MySQL


Todo buen administrador sabe que crear una tabla con contraseas totalmente accesibles es un
fallo de seguridad tremendo. Imaginemos por un momento que pasara si un hacker consiguiese
llegar hasta nuestra tabla usuarios, sacar un listado de las contraseas o peor an, modificarlas.
Si este sistema guarda informacin sensible podra convertirse en un serio problema empresarial,
por lo que la seguridad en cuanto a contraseas siempre debe ser una premisa para nosotros. Por
suerte, MySQL nos da diferentes herramientas para hacer nuestras contraseas ms seguras,
vamos a enumerarlas desde la menos segura hasta la ms segura de todas:

Password
Esta funcin est presente desde hace unas cuantas versiones, pero sin embargo se ha
demostrado que es fcilmente vulnerable por lo que no merece la pena explicarla.

MD5
Para guardar una contrasea encriptada con MD5 necesitaremos una tabla con un campo de 32
caracteres, aunque se ha demostrado que el algoritmo MD5 puede ser vulnerado, la prctica es
tan compleja que no merece la pena el esfuerzo, el algoritmo MD5 no puede ser revertido, es
decir, no se pueden recuperar contraseas de este sistema.
Insertar una contrasea con MD5:
mysql> INSERT INTO usuarios VALUES('usuario',MD5('contrasea'));

SHA o SHA1
La funcin SHA y SHA1 son sinnimos, por lo que hacen el mismo efecto, al igual que MD5 no
puede ser revertido y este necesita un campo de 40 caracteres para su almacenamiento, es ms
seguro que MD5 ya que calcula el cheksum SHA de 160 bits de una cadena, mientras que MD5 la
calcula de 128.

31/08/2015 09:21 a.m.

http://www.solingest.com/blog/almacenar-contrasenas-en-mysql

Insertar una contrasea con SHA:


mysql> INSERT INTO usuarios VALUES('usuario',SHA('contrasea'));

AES
El algoritmo AES es el ms completo y complejo, tiene posibilidad de revertirse y se utiliza con una
llave privada, es decir, debemos proporcionar dicha llave para encriptar y desencriptar las
contraseas. Sera vulnerable en el caso de que alguien consiguiese violar nuestro cdigo fuente y
viera que llave estamos pasando a la cadena. Para almacenar estas contraseas necesitamos que
nuestro campo sea de tipo BLOB, ya que el resultado de la operacin ser un dato binario muy
aleatorio.
Insertar una contrasea con AES:
mysql> INSERT INTO usuarios VALUES('usuario',AES_ENCRYPT('contrasea','llave'));
Para desencriptar:
mysql> INSERT INTO usuarios VALUES('usuario',AES_DECRYPT('contrasea','llave'));

Si quieres utilizar la funcin AES, debes de tener una versin de MySQL superior a la 4.0.2, ya que
es cuando esta funcin fue agregada.
Por lo tanto ahora sabemos que la nica manera (por ahora) de que nuestras contraseas sean
totalmente seguras, es utilizando la funcin AES, y asegurarse que nadie puede acceder a nuestro
cdigo fuente.

31/08/2015 09:21 a.m.

Вам также может понравиться