Seguridad de los datos de Usuarios
En este artículo veremos como realizar la Seguridad de los datos de Usuarios, por ejemplo el password, el email y otros datos sensibles que puedan perjudicar a nuestros usuarios si salen a la luz.
Leyes
Pero esto no solo es para proteger a sus usuarios, también se trata de una responsabilidad que posee usted con sus usuarios, de proteger sus datos personales. Por ejemplo, en Europa existe el RGPD(Reglamento General de Protección de Datos) y en Estados Unidos tenemos una cantidad de leyes a cumplir:
Leyes existentes de EEUU:
Ley Gramm-Leach-Bliley (GLBA): Protege la información financiera de los consumidores.
Ley de Portabilidad y Responsabilidad del Seguro Médico (HIPAA): Protege la información médica de los consumidores.
Ley de Protección al Consumidor de Crédito (FCRA): Regula la recopilación y el uso de información crediticia.
Ley de Privacidad de las Comunicaciones Electrónicas (ECPA): Protege la privacidad de las comunicaciones electrónicas.
En General, todos los países tiene Leyes de protección de datos que debe cumplir pero lo mas recomendable es tener en cuenta las leyes de EEUU.
Datos a Proteger
¿Qué deberíamos proteger cuando un usuario se registra en nuestra web?
Datos personales:
- Nombres completos
- Direcciones
- Números de teléfono
- Correos electrónicos
- Números de identificación personal (DNI, NIE, etc.)
- Información financiera (números de tarjetas de crédito, cuentas bancarias, etc.)
- Información médica
- Datos biométricos (huellas dactilares, reconocimiento facial, etc.)
Datos confidenciales:
- Información comercial (proyectos, estrategias, etc.)
- Propiedad intelectual (patentes, marcas comerciales, etc.)
- Información de empleados (salarios, evaluaciones de desempeño, etc.)
- Datos de investigación
- Cualquier otra información que pueda ser utilizada para causar daño a tu empresa o a tus clientes
¿Cómo puedo proteger estos datos?
Protección contra CSRF
– La defensa contra ataques CSRF debería ser una prioridad fundamental en el desarrollo de aplicaciones web. CSRF representa una amenaza significativa, ya que los atacantes pueden aprovecharse de las sesiones activas de los usuarios para ejecutar acciones no autorizadas en su nombre.
1 – Para prevenir el ataque CSRF, es fundamental implementar un mecanismo de protección utilizando tokens aleatorios. Estos tokens se generan y se asignan al usuario cuando interactúa con un formulario o una solicitud en el sitio web. Cuando el usuario envía el formulario, el token asociado se incluye en la solicitud.
Cuando la solicitud llega al servidor, se verifica que el token enviado coincida con el token esperado para esa acción específica. Si los tokens coinciden, se permite que la acción se lleve a cabo; de lo contrario, la solicitud se rechaza.
Esta técnica garantiza que solo las solicitudes originadas desde el sitio web y que contengan un token válido sean procesadas. Al utilizar tokens aleatorios y únicos para cada solicitud, se evita que un atacante pueda predecir o manipular los tokens, lo que protege contra los ataques CSRF de manera efectiva
XSS protection
También deberíamos pensar es en la protección contra ataques XSS, ya que no tiene sentido proteger los datos de nuestro usuario, si estos terminan dirigiéndose a otra página debido a un script malintencionado estamos jodidos.
2- En este caso deberíamos evitar que nuestros usuarios coloquen scripts en nuestra página, en este caso podemos utilizar la función htmlspecialchars en PHP, pero también puedes utilizar la biblioteca de HTMLpurifier asegurándote de que lo publica el usuario no sea dañino para tu sitio
Validación
Primero que nada deberíamos de hacer una validación a la data que nuestro usuario ingresa en los formularios, esto en la parte de back-end.
No nos sirve que solo se aplique en la parte del front-end, ya que un usuario mal intencionado podría saltárselo. Por otra parte hacerlo en el front-end ayuda a que nuestro server no esté procesando datos sin sentido.
3 – La idea general sería validación en el front-end, si pasa validación en el back-end.
Prefijos en bases de datos
Cuarto, en WordPress como en otros frameworks se usan prefijos en nuestras bases de datos y esto no es un capricho de los desarrolladores de WordPress es un nivel de seguridad más a nuestra página o app.
Por lo general, se tratará de atacar tablas con nombres como usuarios, password, email, etc.
4 – prefijos a tablas en las bases de datos
Encriptación
Otra cosa a tener en cuenta es que hay datos que incluso así son demasiados delicados para mantenerlos visibles en la base de datos.
Por ejemplo el password, email, DNI etc. estos datos por lo menos deberíamos de hacerles una encriptación.
5 – encriptación de datos sensibles
Más seguridad a tener en cuenta para la seguridad de los datos de usuarios
Utilizar una conexión segura: Usa una conexión HTTPS para encriptar la comunicación entre tu aplicación PHP y la base de datos.
Almacenar las credenciales de la base de datos de forma segura: No las guardes directamente en tu código PHP. Puedes usar un archivo de configuración externo o un gestor de secretos para almacenarlas de forma segura.
Política de seguridad de contenido (CSP)
Protección contra ataques de fuerza bruta
Puedes ver como protegerte ante este ataque en el post sobre fail2ban: Ataques por fuerza bruta a servidores(linux).
Protección contra ataques de denegación de servicio (DoS)