Buscador

Busca aquí los artículos:

 

RSS Suscríbete al Boletín

Escribe tu correo para recibir nuestro boletín de artículos:

Plan Iniciación

1 Dominio

3 Gb de Tráfico Mensual

2 Bases de datos MySql

250 Mb de espacio Web y Correo

Ilimitadas BD Access

Programación ASP, ASP.Net y PHP

Precio: 5 € / Mes

Ir Plan Inicial

Plan Básico

1 Dominio

8 Gb de Tráfico Mensual

10 Bases de datos MySql

600 Mb de espacio Web y Correo

Ilimitadas BD Access

Programación ASP, ASP.Net y PHP

Precio: 10 € / Mes

Ir Plan Básico

Plan Profesional

1 Dominio

20 Gb de Tráfico Mensual

30 Bases de datos MySql

1,5 Gb de espacio Web y Correo

Ilimitadas BD Access

Programación ASP, ASP.Net y PHP

Precio: 18 € / Mes

Ir a Plan Profesional

Plan Profesional ISP

50 Gb de Tráfico Mensual

50 Bases de datos MySql

4,5 Gb de espacio Web y Correo

Ilimitadas BD Access

Programación ASP, ASP.Net y PHP

Precio: 30 € / Mes

Ir a Plan Profesional ISP

Servidor Linux

Tu servidor dedicado con sistema Linux por 199 € al mes .

 

 

Ver más

Servidor Windows

Tu servidor dedicado con sistema Windows por 210 € al mes .

 

 

Ver más

Registre su dominio ahora

www.

Su dominio en 24 horas
Su propio nombre de dominio en un tiempo record, sin complicaciones ni compromisos.

Almacenar contraseñas en MySQL

Feed RSS Estás en MySQL Fecha: 23/04/2007

Existen ciertas normas que nos prohiben almacenar contraseñas con texto plano y además esta nunca ha sido una buena opción, si queremos que nuestros usuarios se sientan seguros utilizando nuestros sistemas, debemos proporcionarles un nivel superior.
Publicidad

Todo buen administrador sabe que crear una tabla con contraseñas totalmente accesibles es un fallo de seguridad tremendo. Imaginemos por un momento que pasaría si un hacker consiguiese llegar hasta nuestra tabla usuarios, sacar un listado de las contraseñas o peor aún, modificarlas.

Si este sistema guarda información sensible podría convertirse en un serio problema empresarial, por lo que la seguridad en cuanto a contraseñas siempre debe ser una premisa para nosotros. Por suerte, MySQL nos da diferentes herramientas para hacer nuestras contraseñas más seguras, vamos a enumerarlas desde la menos segura hasta la más segura de todas:

Password

Esta función está presente desde hace unas cuantas versiones, pero sin embargo se ha demostrado que es fácilmente vulnerable por lo que no merece la pena explicarla.

MD5

Para guardar una contraseña encriptada con MD5 necesitaremos una tabla con un campo de 32 caracteres, aunque se ha demostrado que el algoritmo MD5 puede ser vulnerado, la práctica es tan compleja que no merece la pena el esfuerzo, el algoritmo MD5 no puede ser revertido, es decir, no se pueden recuperar contraseñas de este sistema.

Insertar una contraseña con MD5:
mysql> INSERT INTO usuarios VALUES('usuario',MD5('contraseña'));

SHA o SHA1

La función SHA y SHA1 son sinónimos, 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 más seguro que MD5 ya que calcula el cheksum SHA de 160 bits de una cadena, mientras que MD5 la calcula de 128.

Insertar una contraseña con SHA:
mysql> INSERT INTO usuarios VALUES('usuario',SHA('contraseña'));

AES

El algoritmo AES es el más 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 contraseñas. Sería vulnerable en el caso de que alguien consiguiese violar nuestro código fuente y viera que llave estamos pasando a la cadena. Para almacenar estas contraseñas necesitamos que nuestro campo sea de tipo BLOB, ya que el resultado de la operación será un dato binario muy aleatorio.

Insertar una contraseña con AES:
mysql> INSERT INTO usuarios VALUES('usuario',AES_ENCRYPT('contraseña','llave'));
Para desencriptar:
mysql> INSERT INTO usuarios VALUES('usuario',AES_DECRYPT('contraseña','llave'));

Si quieres utilizar la función AES, debes de tener una versión de MySQL superior a la 4.0.2, ya que es cuando esta función fue agregada.

Por lo tanto ahora sabemos que la única manera (por ahora) de que nuestras contraseñas sean totalmente seguras, es utilizando la función AES, y asegurarse que nadie puede acceder a nuestro código fuente.

 

Lecturas: 3817

Artículos Relacionados

¿Qué es mejor Like o FullText?

Fecha: 13/04/2007

Cuando debemos buscar entre una gran cantidad de datos, la búsqueda con el comando Like se hace tediosa, debemos comenzar a utilizar las búsquedas FullText.

Coincidencias de la Base de Datos

Acceso al Panel Plesk y Recuperar contraseñas

Fecha: 23/05/2007

Como acceder al Panel Plesk para contolar un alojamiento y como recuperar la contraseño de acceso a Plesk si la has olvidado.

La función CONCAT en MySQL

Fecha: 01/05/2007

Hay diferentes maneras de unir datos extraidos de una tabla, la más común es hacerlo una vez estos datos están fuera, pero se puede realizar una consulta con los datos ya concatenados.

Importantes mejoras en MySQL 6.0

Fecha: 21/05/2008

La nueva versión de MySQL parece que viene con importantes mejoras respecto a sus antecesoras.

Acceder a mysql sin saber la clave

Fecha: 16/05/2007

Puede ser que se nos olvide la clave de nuestro MySQL, no hace falta que os desespereis ya que se puede recuperar con una serie de instrucciones.

MySQL: La Base de datos perfecta

Fecha: 17/06/2007

Todos sabemos que MySQL es uno de los mejores sistemas de bases de datos, pero ¿cómo podemos construir la base de datos más rápida?. Hay que tener en cuenta una serie de factores importates.

Comentarios de los Usuarios (4)

Jcorp escribió:

Fecha: 09/05/2007 17:40:34

Sin duda alguna la mejor opción es AES
Yo siempre he utilizado AES para realizar las encriptaciones de mis contraseñas, creo que está practicamente demostrado que es la opción más segura.

Lo recomiendo sin duda alguna.

Jokin escribió:

Fecha: 15/05/2007 13:35:44

Aes es muy vulnerable
Si tienen acceso a tu bbdd es muy probable que tambien tengan acceso a tu codigo fuente, Ademas, el administrador del sistema siempre podria recuperar la contraseña de cualquier usuario. Lo mas seguro es utilizar alguna de las funciones no reversibles, y si quieres un extra de seguridad, encriptar el resultado de estas con aes. Si alguien olvida una contraseña se le genera una nueva, pero de este modo es practicamente imposible recuperarla desde la base de datos.

Alberto Redondo escribió:

Fecha: 14/06/2007 11:25:22

Las encriptaciones no reversibles no siempre son la mejor opción
Yo no apoyo tanto el hecho de que una encriptación no reversible sea la mejor opción, a mi siempre me ha gustado poder recuperar lo que encripto. Y lo que comenta Jokin, pues puede que sea así o no, el administrador no siempre tiene porque poder ver el código.

Pero bueno, para gustos los colores.

XYYY7 escribió:

Fecha: 01/10/2007 4:46:00

apoyo y soporto el comentario de Jokin
Definitivamente... el hecho de que alla una llave, buscar seguridad sobre otra seguridad.. (velar por nuestros codigos).., lo reversible, bla bla bla... ME PARECE QUE ES PELIGROSO LA OPCION DE "AES"

Este artículo ya ha superado la fecha máxima para escribir comentarios, 1 año.


Hosting y Alojamiento Web