PlatesPHP: Sistema de plantillas para Codeigniter 3
PlatesPHP: Sistema de plantillas para Codeigniter 3
¡INSCRÍBETE A CUALQUIER CURSO CON UN 50% DE DESCUENTO PARA NUEVOS CLIENTES!

En este tutorial vamos a ver como encriptar datos con AES en codeigniter para guardar esa información en campos de tipo blob en nuestra base de datos y a continuación poder recuperarla de la misma forma.

Para este propósito tenemos los métodos AES_ENCRYPT y AES_DECRYPT, los cuáles aceptan dos parámetros.

En el primer caso los datos a insertar en base de datos y la clave utilizada para la encriptación.

En el segundo sólo necesitamos pasar el nombre del campo que tenemos encriptado y la clave con la que lo encriptamos.

Gracias a AES podemos salvar nuestra información encriptada y así aumentar la seguridad de nuestra base de datos, de esta forma, si algún día se ve comprometida, el que pueda acceder también necesitará la clave de encriptación para poder ver la información

real, de otra forma sólo verá datos de tipo binario, cosa que le resultará poco útil.

Dicho todo esto, veamos lo sencillo que es su implementación.

Lo primero que debemos hacer es crear un nuevo elemento de configuración que guardará nuestra clave de encriptación, así que podemos abrir nuestro archivo config.php y añadimos la siguiente línea.

Ahora podemos crear la siguiente tabla en nuestra base de datos con los campos de tipo blob cómo habíamos dicho.

Cabe decir que los campos a través de los cuáles necesitemos crear búsquedas, así como claves siempre es mejor que sean de tipo entero, aunque si quieres puedes encriptar y desencriptar al hacer tus queries.

Ahora sólo debes configurar tus datos de acceso a la base de datos y cargar la misma en el autoload.

Una vez hecho, crea un nuevo controlador llamado aes y añade el siguiente código.

Cómo puedes ver, tenemos dos funciones, el index que insertará datos a través del modelo y el get que los obtendrá de la misma forma y los mostrará.

Ahora crea el modelo aes_model y añade el siguiente código.

Lo primero que hacemos es crear una propiedad pública para no tener que escribir todo el rato el config item dónde tenemos guardada la clave de encriptación.

El método save primero escapa los datos(no necesario aquí), y después encripta los datos con AES_ENCRYPT para ser guardados en base de datos, lo explicado anteriormente es justamente lo que hacemos aquí.

El método get sólo obtiene los datos utilizando el método AES_DECRYPT, de la misma forma, debemos utilizar la clave secreta o no podremos desencriptar la información.

Y eso es todo, así de sencillo es dar una mayor seguridad a nuestra base de datos en codeigniter, espero que te guste y te resulte útil para tus proyectos.

Saludos.