2011-03-23 17 views
5

Soy nuevo en el desarrollo web (comenzó en enero) y en la seguridad web (¡empecé hace menos de una semana!), Así que discúlpeme si mi pregunta es groseramente incrédula, está mal informada o simplemente es estúpida.¿Es necesario cifrar contraseñas antes de enviarlas a través de HTTPS?

La empresa para la que trabajo es el producto principal, es un buen sistema cliente/servidor anticuado. Para que sea más atractivo para nuestros clientes, me han dado la tarea de desarrollar un conjunto de aplicaciones web centradas en tareas simples que complementan el diseño centrado en el proceso de todo el negocio del sistema. Por ejemplo, si el rol de un usuario en la organización consiste en aprobar órdenes de compra y órdenes de pago, le resultará más fácil utilizar la aplicación de aprobaciones web que abrir los módulos Compras y Tesorería y usarlas para aprobar órdenes de compra y órdenes de pago, respectivamente. .

No hace falta decir que todas mis aplicaciones web tienen una página de inicio de sesión. Y, por supuesto, necesito que estén seguros. Por ese motivo, por diseño, estas aplicaciones web solo se pueden usar a través de HTTPS, nunca a través de HTTP simple.

Ahora, me gustaría saber qué tan seguro es enviar contraseñas a través de HTTPS sin más medidas de seguridad. ¿Es lo suficientemente seguro? ¿Qué tienen que decir las personas con experiencia en el campo de la seguridad?

Respuesta

14

HTTPS se encargará de la seguridad del transporte, por lo que no hay ninguna razón para hackearlos en el lado del cliente. Si lo hace, la contraseña hash esencialmente se convierte en la verdadera, desde el punto de vista del servidor. Si alguien roba su base de datos, cada fila tendrá el valor que el servidor espera recibir a través de la red. El atacante puede simplemente crear un nuevo cliente que envíe el hash directamente sin molestarse con ningún hashing real.

Sin embargo, la contraseña enviada a través de la red nunca se debe almacenar en la base de datos. Por el contrario, debe haber una sal aleatoria por usuario. Esto se debe usar para cifrar la contraseña del lado del servidor.

Ver Salting Your Password: Best Practices?.

+0

@Matthew: Realmente no entiendo cómo funciona la salazón al azar. ¿Cómo puedo validar la contraseña de un usuario contra un hash que incluye una sal aleatoria? – pyon

+2

@ Eduardo, almacena tanto la sal por usuario como el hash en la base de datos. Ninguno de los dos es realmente secreto. Luego, hash la sal almacenada y la contraseña suministrada y verifica el resultado contra el hash almacenado. Ver [este artículo] (http://wheelersoftware.com/articles/storing-passwords-securely-hash-salt.html). También puede buscar Stack Overflow para obtener más información. –

+0

@Matthew: Si estas sales se guardan realmente en la base de datos y se asocian con sus respectivos usuarios, ¿cuál es la diferencia entre usar un sal aleatorio y utilizar un campo no público específico del usuario (como ID de usuario, en sistemas en los que ID de usuario y UserName son campos separados) como la sal? – pyon

Cuestiones relacionadas