studio programacion móviles libros libro desarrollo desarrollar curso aprende aplicaciones http login https passwords username

http - programacion - Forma correcta de enviar el nombre de usuario y la contraseña del cliente al servidor



manual de programacion android pdf (3)

Esta pregunta no es específica del idioma. Tengo curiosidad por saber cómo enviar correctamente el nombre de usuario y la contraseña de un formulario de inicio de sesión a un servidor.

Mi conjetura es escribir la contraseña, poner el nombre de usuario / contraseña en el cuerpo de la POST y enviarla a través de HTTPS . ¿Cuál es la mejor manera?

Por si acaso voy a mencionar un método menos que ideal:

http://www.somesite.com/login?un=myplaintextusername&pw=myplaintextpassword


Las partes importantes son que transmite los datos del formulario en el cuerpo de la POST (de esa manera no se almacena en caché en ninguna parte, ni normalmente se almacena en ningún archivo de registro) y usa HTTPS (de esa manera, si tiene un buen certificado SSL / TLS, nadie puede rastrearlo la contraseña de observar el tráfico de su red). Si lo hace, no hay un gran beneficio adicional en el hash de la contraseña, al menos no durante la transmisión.

¿Por qué la gente habla de las contraseñas de hash, entonces? Debido a que normalmente no desea almacenar la contraseña del usuario en forma de texto simple en su base de datos del lado del servidor (de lo contrario, el impacto de un servidor comprometido es incluso peor de lo que sería de otra manera). En su lugar, generalmente almacena un formulario con sal / hash, y luego aplica el mismo salt / hash a la contraseña recibida a través de los datos del formulario, para que pueda comparar los dos.

Para obtener más información sobre la salazón, consulte http://en.wikipedia.org/wiki/Salt_(cryptography) (y los enlaces allí).


Si está utilizando HTTPS, puede enviar el nombre y la contraseña en un cuerpo de POST que estará a salvo de escuchas ilegales (suponiendo que confía en SSL). No es necesario que la contraseña sea hash, si lo hace, entonces la función hash de la contraseña es tan útil como la contraseña en sí misma, por lo que no le compra nada.

Una pregunta más importante es cómo almacenar la contraseña en el lado del servidor. Almacenar una contraseña con hash solo es aceptable si utiliza un buen algoritmo como scrypt . Pero eso todavía no es tan bueno como un protocolo avanzado como SRP .


Siempre debes usar HTTPS y evitar el código hecho en casa. SSL se encargará de hashing y cifrado. Ese es el ÚNICO método seguro.

También asegúrese de tener las contraseñas de hash en el extremo del servidor y almacenar el hash, no la contraseña original. Luego compare los hashes para verificar los inicios de sesión. Esto evitará que los atacantes lean las contraseñas de texto sin formato directamente de su base de datos si están comprometidas.