Contraseñas, doble factor y sesiones
Almacenamiento
Un algoritmo de hash de contraseñas diseñado para ser lento y con mucho uso de memoria, con una sal por usuario. Nunca cifrado reversible ni hash rápido.
Una longitud mínima razonable, una comprobación contra listas de contraseñas filtradas, y sin rotación periódica forzada: lleva a contraseñas peores.
Un segundo factor
Una app de autenticación o una clave de hardware. Los mensajes de texto son mejor que nada pero más débiles. Guarda códigos de respaldo, y planifica una vía de recuperación que no anule toda la protección.
Sesiones
Un token con caducidad, una opción de revocación del lado del servidor, y una lista de dispositivos conectados que el usuario ve y puede desconectar. Rota el identificador de sesión en cada inicio de sesión y en cada cambio de contraseña.
En profundidad
Limita los intentos por cuenta y por origen, y añade un retardo creciente. Y alerta al usuario de eventos significativos: un inicio de sesión desde un dispositivo nuevo, un cambio de correo, el doble factor desactivado. Con frecuencia el usuario es el primero en notar una toma de control de la cuenta.