- Si quieres seguridad, TÚ. DEBER. USAR. HTTPS. Con un certificado adecuado, no autofirmado. Hagas lo que hagas, las identidades autenticadas en comunicación no cifrada serán triviales de robar. (No importa la contraseña, el atacante puede simplemente robar la cookie de sesión que se proporciona con cada solicitud).
- Hashing no tiene ningún valor en sí mismo, debe salarlo. (Esto no está realmente relacionado con la autenticación:es una segunda capa de defensa en caso de que alguien robe su base de datos. Lo que probablemente sucederá tarde o temprano si se convierte en un objetivo prometedor). Use bcrypt con sal aleatoria larga por usuario, sha* es inseguro porque es demasiado rápido.
- Utilice métodos que ya están en uso en grandes proyectos conscientes de la seguridad. Esos métodos, hasta cierto punto, han resistido la prueba del tiempo. Existen métodos basados en desafío-respuesta que evitan enviar la contraseña de cualquier forma, pero la criptografía es difícil y es muy fácil implementar algoritmos seguros de una manera insegura. Use un buen marco de seguridad (por ejemplo, PHPass ), no confíe en un código que no se usa mucho.