¡¡¡HEEEEY YOU!!!, estamos iniciando el 2021, un año lleno de retos especialmente para nosotros los desarrolladores, ya que se estima que los ataques cibernéticos crezcan en un 300% respecto a años anteriores.
Es por eso que debemos disminuir el riesgo, protegiendo nuestros datos lo más posible para que no cualquiera pueda acceder a ellos.
El día de hoy te presentaré una forma muy eficiente y segura con la cual podrás encriptar los datos de tu aplicación desarrollada en Laravel. Pero antes me gustaría resolver un par de dudas que seguramente podrías tener.
¿Laravel es seguro?
Totalmente, Laravel cuenta con una arquitectura bastante robusta, es uno de los frameworks más seguros de PHP gracias a su amplia comunidad que se encarga de colaborar en el repositorio oficial.
Pero como todo, hay usuarios que no siguen las buenas prácticas de desarrollo web y esto hace algunas aplicaciones vulnerables a ataques de terceros, pero, no quiere decir que Laravel sea inseguro, vamos, si tienes un avanzado sistema de seguridad pero no tiene luz, ¿cómo va a funcionar?.
¿Cómo se encriptan los datos?
El paquete que te presentaré a continuación se encargará de toda la magia, no tendrás que programar extra. Sin embargo es importante que sepas que el paquete se encargará de encriptar y desencriptar con ayuda de Eloquent y tu APP_KEY
definida en tu archivo .env
.
¿Mi aplicación web será más lenta?
El tener seguridad en cualquier sistema agrega una capa que hace más lentos algunos procesos, pero, dejame decirte que la librería que estaremos utilizando el día de hoy no hará más lenta tu aplicación, no significativamente.
¿Cómo encriptar datos en Laravel?
Para poder realizarlo automáticamente tendremos que instalar un paquete que nos ayudará en todo el proceso.
Instalación
A través de Composer tendrás que ejecutar el siguiente comando para instalar el paquete:
composer require elgibor-solution/laravel-database-encryption
Agregar provider
Si tienes Laravel 5.4 o inferior, necesitarás agregar el proveedor de servicios, en dado caso de que tengas una versión mayor Laravel lo hará por ti.
'providers' => [ ... \ESolution\DBEncryption\Providers\DBEncryptionServiceProvider::class, ],
Integración
El paquete trabaja con Eloquent, por lo que tendrás que agregar un trait al modelo en donde deseas encriptar datos, por ejemplo, nosotros trabajaremos con el modelo User:
use ESolution\DBEncryption\Traits\EncryptedAttribute; class User extends Eloquent { use EncryptedAttribute; /** * The attributes that should be encrypted on save. * * @var array */ protected $encryptable = [ 'correo', 'telefono' ]; }
Como puedes ver, anteriormente definimos una variable llamada $encryptable
, la cual será un array con las columnas que deseas encriptar de tu modelo, en este caso el correo y el teléfono del usuario.
También, agregamos el trait EncryptedAttribute
que se encargará de agregar toda la maquinaria necesaria para realizar el proceso de encriptación y desencriptación de nuestros datos.
¿Eso es todo?
Para nada, de hecho, me hace falta explicar como funciona la librería, es por eso que he preparado un video para eso, en donde te explicaré a detalle cómo puedes trabajar con los métodos que proporciona la librería.
Si te ha gustado el material me ayudaría si pudieras compartir el artículo en tu comunidad de desarrollo web, ayudarás a seguir trayendo contenido de calidad para el blog y así ayudar a más programadores.
Obtén beneficios exclusivos
Suscríbete al boletín y obtén beneficios exclusivos directo en tu correo.
Gracias por suscribirte...
Algo salió mal...
Increíble video, muchas gracias por compartir el material.
Gracias Jesús, es bueno saber que el contenido te gusta.
Hola, muchas gracias por este post. Muy bueno, saludos.
Saludos Diego, es bueno saber que te gusto.
Que tal excelente post, me encantaría saber si podrías hacer un tuto, en donde por ejemplo con el email de los usuarios ya encriptados, se pueda iniciar sesión.
Justo el siguiente video trata de eso, para llevarlo a otros entornos y algo ya más real, estará disponible en mi canal de YT.
Saludos.
COMMO LOS DESENCRIPTO EN MI BASE DE DATOS PARA CUALQUER CONSULTA?