Seguridad de las contraseñas es un tema muy importante, que recientemente se ha vuelto muy popular. Aunque ciertamente no es la única cosa que usted necesita para hacer su aplicación segura, es una de esas medidas de seguridad que todos los desarrolladores consciente de la seguridad deben implementar. Según experiencia de auditoría de base de datos, en la implementación de una aplicación, le sugerimos que haga lo siguiente:
- Cifrar toda la comunicación con los clientes. Si usted está comunicando utilizando el protocolo TCP, debe usar TLS; si está comunicando mediante UDP, debe usar DTLS. Enviar contraseña a través de una conexión sin protección es algo que nunca debe hacer.
- Almacenar el hash de contraseña junto con la salt correspondiente. Mantener sólo contraseñas cifradas puede resultar en violación de la seguridad fácilmente ya que ataque de diccionario puede romper hashes sin salt según empresa de auditoría de base de dato. Para evitar esta situación debe usar ‘salted hashes’. Salt y contraseña se concatenan a través de funciones de hash para dar como resultado ‘salted hash’. Salt debe ser diferente para cada usuario para qué hashes serán diferentes para diferentes usuarios, incluso si sus contraseñas son exactamente iguales. Además los ataques rainbow tables no funcionan bien sobre salted hash.
- Implementar funciones de hash en el lado del servidor por aplicaciones web basadas en navegador. La configuración del lado del servidor de funciones hash deba ser lo más lenta posible. Según recomendaciones de los expertos de auditoría de base de datos, podría usar funciones Hash como de Scrypt, Argon2 en el lado del servidor.
- Implementar funciones de hash en el lado del servidor y el cliente por aplicaciones que deben ser instadas. Implementar funciones de Cliente + Servidor hash. La configuración tanto del lado del cliente y del lado del servidor de funciones hash deba ser lo más lenta posible. Según recomendaciones de los expertos de auditoría de base de datos, podría usar funciones hash como de Scrypt, Argon2 en el lado del cliente y del lado del servidor.
- Establecer la longitud mínima de la contraseña por lo menos 8 y dejar una longitud máxima de la contraseña.
- Prohibir las contraseñas que son bien conocidas en las bases de datos de contraseñas para prevenir ataques de diccionario.
- Implementar políticas de cambios de contraseña cada 2 meses.
- Implementar la autenticación de dos factores, al menos para los usuarios privilegiados, como administrador.
- Implementar un límite de sesión de entrada para controlar el número de intentos de inicio de sesión fallido y bloquear direcciones Ip. El segundo límite puede ser un límite por usuario-por-IP, y esto tiene que ser mayor que el primero.
- Tener políticas de auditoría de base de datos e implementar recomendaciones de los expertos de seguridad cibernética.
Entusiasta de la seguridad cibernética. Especialista en seguridad de la información, actualmente trabajando como especialista en infraestructura de riesgos e investigador.
Experiencia en procesos de riesgo y control, soporte de auditoría de seguridad, diseño y soporte de COB (continuidad del negocio), gestión de grupos de trabajo y estándares de seguridad de la información.
Envía tips de noticias a info@noticiasseguridad.com o www.instagram.com/iicsorg/.
También puedes encontrarnos en Telegram www.t.me/noticiasciberseguridad