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.
0 comments:
Post a Comment