La lista de seguridad esencial para la identidad del usuario
La construcción de la identidad del usuario es un componente crítico de cualquier aplicación. Validar nombres de usuario y contraseñas puede parecer el enfoque más simple, pero hay muchos otros aspectos a considerar.
Introducción
La construcción de la identidad del usuario es un componente crítico de cualquier aplicación. Le permite proporcionar experiencias personalizadas, mejorar la calidad de los datos y mejorar la retención de usuarios.
Validar nombres de usuario y contraseñas puede parecer el enfoque más simple, pero hay muchos otros aspectos a considerar. ¡Empecemos!
Infraestructura
Hacer cumplir HTTPS
Empecemos por lo básico. Siempre debe hacer cumplir el uso de HTTPS (Protocolo seguro de transferencia de hipertexto) para cifrar la transmisión de datos a través de Internet. HTTPS garantiza que los datos intercambiados entre el dispositivo del usuario y su servidor permanezcan confidenciales y a prueba de manipulaciones.
Configurar HTTPS puede parecer desafiante, pero hay muchas herramientas y servicios disponibles para ayudarlo:
- Si está alojando por sí mismo, Let's Encrypt proporciona certificados SSL/TLS gratuitos que pueden usarse para habilitar HTTPS en su sitio web.
- Si está utilizando un proveedor de nube, como AWS, Azure o Google Cloud, puede utilizar sus servicios administrados para configurar HTTPS.
No permita el acceso público a la base de datos, límitelo solo a fuentes de confianza
Aunque también puede parecer básico, ha habido numerosas violaciones de seguridad debido a permitir el acceso público a las bases de datos. Por lo tanto, vale la pena mencionarlo aquí.
Recuerde siempre nunca permitir el acceso público a su base de datos. Coloque su base de datos en una red privada y sólo permita el acceso desde fuentes de confianza.
Gestione de forma segura los tokens privados
Los tokens privados, como los tokens de acceso o las claves de API, a menudo se utilizan para fines de autenticación y autorización programáticas. Para administrar estos tokens de forma segura:
- Utilice tokens de corta duración y tokens de actualización para minimizar el riesgo de acceso no autorizado.
- Utilice un mecanismo seguro de almacenamiento de tokens, como un cofre clave, para proteger los tokens del acceso no autorizado.
- Rote regularmente los tokens para evitar que sean comprometidos. Algunos protocolos, como OAuth 2.0, proporcionan un mecanismo para la rotación de tokens.
- Mantenga el control sobre la revocación de tokens en caso de una violación de seguridad.
Elija sabiamente un algoritmo de hash de contraseña
Si tiene experiencia con el hashing de contraseñas, puede saber que hay muchos algoritmos disponibles, algunos de los cuales ya no se consideran seguros, como MD5, SHA-1 y SHA-2.
Algunas razones comunes para su inseguridad son:
- No fueron diseñados específicamente para el hashing de contraseñas, y su velocidad computacional es demasiado rápida, lo que facilita los ataques de fuerza bruta.
- Carecen del uso de la sal, lo que facilita la creación de tablas arco iris para ellos.
- Son susceptibles a los ataques de colisión, permitiendo a los atacantes generar diferentes contraseñas con el mismo valor hash.
Algoritmos de hashing de contraseñas estándar de la industria, como bcrypt y Argon2, han sido diseñados para abordar estos problemas. Debido al alcance limitado de este artículo, no entraremos en detalles sobre ellos. Consulte La evolución del hashing de contraseñas para aprender más.
Aprenda y cumpla estrictamente con los estándares abiertos
Los estándares abiertos como OAuth 2.0 y OpenID Connect (OIDC) proporcionan enfoques seguros y estandarizados para la autenticación y autorización de usuarios. Han sido probados en batalla y ampliamente adoptados por la industria.
Sin embargo, implementarlos incorrectamente puede llevar a vulnerabilidades de seguridad, incluso para equipos grandes con desarrolladores experimentados. Un ejemplo reciente es la vulnerabilidad de OAuth descubierta en Expo, un popular marco de trabajo para la construcción de aplicaciones móviles. Sirve como un buen ejemplo de cómo un pequeño error puede resultar en una violación de seguridad.
Cifre los datos en reposo
Los datos en reposo, como la información del usuario almacenada o las copias de seguridad de la base de datos, deben cifrarse utilizando un algoritmo de cifrado fuerte. Esto garantiza que, incluso si los datos son comprometidos, no pueden ser leídos without la llave de descifrado. Verifique si su proveedor de nube admite esta característica, ya que es comúnmente necesaria para propósitos de cumplimiento.
Configure cortafuegos
Los ataques DDoS (Ataque de denegación de servicio distribuido), aunque antiguos, siguen siendo una amenaza significativa. Según el informe de amenazas DDoS de Cloudflare para el cuarto trimestre de 2022, la cantidad de tráfico de ataques DDoS HTTP aumentó un 79% en comparación con el año anterior. En lugar de construir su propia solución, es buena idea configurar cortafuegos administrados y utilizar notificadores para mitigar este riesgo.
Aplicaciones y clientes
Mejore el nivel de seguridad para los clientes públicos
Los clientes públicos, como las aplicaciones móviles o las aplicaciones de una sola página, son más susceptibles a las vulnerabilidades de seguridad. Incluso si los proporciona, debe tratarlos como fuentes no confiables en su modelo de seguridad. Por ejemplo:
- Si está utilizando OAuth 2.0, use Proof Key for Code Exchange (PKCE) para protegerse contra ataques de interceptación de código de autorización.
- Haga cumplir Content Security Policy (CSP) para mitigar ciertos tipos de ataques, incluyendo Cross-Site Scripting (XSS) y ataques de inyección de datos.
Nunca confíe en los datos de entrada públicos
La entrada de los usuarios puede ser una fuente significativa de vulnerabilidades de seguridad, a menudo pasada por alto. Algunos tipos comunes de vulnerabilidades pasadas por alto son Cross-Site Scripting (XSS) e Inyección de SQL. Asegúrese de validar y sanear todos los datos de entrada del usuario antes de usarlos.
Mantenga un registro de las actividades
Mantener un registro de auditoría de las actividades de los usuarios ayuda en la detección e investigación de incidentes de seguridad. Registre y monitorice las acciones de los usuarios, como intentos de inicio de sesión, cambios de contraseña o operaciones sensibles. Analizar estos registros puede proporcionar una visión valiosa de posibles violaciones de seguridad o actividades sospechosas.
Implementar autenticación sólida
Implemente un mecanismo de autenticación fuerte para verificar la identidad de los usuarios. Como mencionamos anteriormente, considere usar protocolos seguros como OAuth 2.0 o OpenID Connect para la autenticación. Para más información, puede referirse a CIAM 101: Autenticación, Identidad, SSO.
Construir una autorización sólida (por ejemplo, implementar el control de acceso basado en roles)
Además de la autenticación, los mecanismos de autorización adecuados deben estar en su lugar. Implemente el control de acceso basado en roles (RBAC) para asegurar que los usuarios sólo tienen acceso a los recursos y acciones que están autorizados a realizar. Para más información, puede referirse a CIAM 102: Autorización y Control de acceso basado en roles.
Implementar autenticación multifactor (MFA)
La autenticación multifactor (MFA) añade una capa extra de seguridad al requerir que los usuarios proporcionen una o múltiples formas de identificación, como una contraseña y un código de un solo uso enviado a su dispositivo móvil. Otro buen ejemplo de MFA es cuando GitHub pide a los usuarios que ingresen un código de un solo uso de su aplicación móvil, que se muestra en la página web, para realizar operaciones sensibles como borrar un repositorio.
Sin embargo, tener un MFA no es una necesidad para la mayoría de las startups tempranas, especialmente si no tienes una solución lista para usar. Puede ser excesivo y afectar negativamente la experiencia de usuario.
Cultura
El consejo proporcionado anteriormente cubre principalmente medidas de seguridad "pasivas", que se conocen antes de que ocurra un incidente de seguridad. Sin embargo, también existen medidas de seguridad "activas" que puedes tomar para mejorar tu postura de seguridad general, que son más efectivas a largo plazo.
Eduque a su equipo y usuarios sobre el phishing y la ingeniería social
Los ataques de phishing y la ingeniería social son críticos porque pueden volver inútiles muchas de las medidas de seguridad mencionadas anteriormente. Por ejemplo, si un usuario es engañado para dar su contraseña o hacer clic en una foto de gato aparentemente inocente que contiene malware, la fuerza de tu algoritmo de hashing de contraseñas o las reglas de tu firewall se vuelven irrelevantes.
La mayoría de las personas encuentran la capacitación en seguridad aburrida, y a menudo lo es. Por lo tanto, cambie la forma en que educa a su equipo y usuarios. Por ejemplo, puede simular un correo electrónico de phishing antes de que un atacante real lo haga y demostrar cómo identificarlo. Incluso puede ofrecer recompensas por informar el correo electrónico al equipo de seguridad.
Configure DevSecOps
Además de las revisiones de seguridad manuales, también puede implementar prácticas de DevSecOps para automatizar las comprobaciones de seguridad. Por ejemplo, puede configurar una tubería de CI/CD para ejecutar herramientas de análisis de código estático como CodeQL y ejecutar automáticamente pruebas de penetración utilizando herramientas como OWASP ZAP.
Abrazar la configuración más estricta sin afectar la experiencia del usuario
Cuando se trata de seguridad, siempre opte por la configuración más segura que no impacte negativamente la experiencia del usuario. Evite tomar atajos o comprometer la seguridad por la conveniencia. La seguridad siempre debe ser una prioridad.
Como startup o desarrollador independiente, puede sentir que le faltan los recursos necesarios para implementar estas medidas. Sin embargo, existen servicios de seguridad profesionales que ofrecen opciones gratuitas o amigables para startups. Tómese el tiempo para revisar y considerar su uso.
Conclusión
La seguridad es un tema complejo, y es imposible cubrir todo en un solo artículo. Esperamos que este artículo le haya ayudado a construir un sentido de seguridad más sólido para usted o su equipo. Si está construyendo una nueva aplicación, también es posible que quiera comprobar Logto, una plataforma que le ayuda a desarrollar, gestionar y proteger las identidades de los usuarios de su producto con un esfuerzo mínimo.