¿Contraseñas procesadas en el lado del servidor? [duplicar]

0

Entonces, mientras estaba trabajando en mi proyecto personal, algo me golpeó.

Cuando alguien crea una cuenta en cualquier servicio web / red social, proporciona su nombre de usuario y contraseña deseados, el servidor los procesa, el nombre de usuario se almacena en un BD y la contraseña se cifra y luego se almacena, pero eso significa que la contraseña recibe la contraseña en texto sin formato y luego aplica un algoritmo antes de almacenar.

Lo mismo sucede cuando alguien inicia sesión, ¿verdad? Por supuesto, esto puede enviarse a través de SSL / HTTPS, pero el servidor aún presenta el texto en claro que representa la contraseña, la codifica y la compara con la contraseña de hash almacenada.

¿Por qué no se hace este proceso del lado del cliente? Sería bastante sencillo para el cliente codificar su contraseña dentro del navegador usando JS. Estoy seguro de que tiene que haber alguna biblioteca dedicada a la mezcla con algoritmos populares como SHA-256.

Tal vez estoy ignorando algo realmente obvio o tal vez no entiendo algo, así que estoy abierto a la corrección.

    
pregunta EChan42 25.04.2016 - 10:16
fuente

1 respuesta

2

Si realiza el hashing en el lado del servidor, el servidor (y un atacante con acceso a él) podría leer su contraseña de texto simple, correcta.

Pero el hashing de la contraseña en el cliente no ayuda realmente si alguien logró obtener acceso al servidor, ya que el atacante podría alterar fácilmente la fuente de javascript para obtener su contraseña en texto simple o comenzar a forzar la base de datos.

Si el servidor es de confianza, entonces no hay problema si procesa las contraseñas, y si el servidor no es de confianza, el hashing del lado del cliente no agregará mucho a la seguridad.

Usar diferentes contraseñas para cada servicio sería una solución mejor y más segura para este problema.

    
respondido por el Lukas 25.04.2016 - 10:54
fuente

Lea otras preguntas en las etiquetas