Las credenciales de autenticación básica HTTP pasaron en URL y encriptación

250

Tengo una pregunta sobre las credenciales de autenticación HTTPS y HTTP.

Supongamos que aseguro una URL con autenticación HTTP:

<Directory /var/www/webcallback>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /var/www/passwd/passwords
Require user gooduser
</Directory>

Luego accedo a esa URL desde un sistema remoto a través de HTTPS, pasando las credenciales en la URL:

https://gooduser:[email protected]/webcallback?foo=bar

¿El nombre de usuario y la contraseña se cifrarán automáticamente con SSL? ¿Es lo mismo cierto para GETs y POSTs? Me cuesta encontrar una fuente confiable con esta información.

rcourtna
fuente
1
Relacionado: Nombre de usuario y contraseña en https url
Hawkeye Parker
Pregunta muy antigua pero sin embargo: este enfoque ha sido desaprobado por ietf.org/rfc/rfc3986.txt : "El uso del formato" usuario: contraseña "en el campo de información de usuario está en desuso".
Madbreaks

Respuestas:

237

¿El nombre de usuario y la contraseña se cifrarán automáticamente con SSL? Es lo mismo para GET y POST

Si si si.

Toda la comunicación (salvo para la búsqueda de DNS si la IP para el nombre de host no está en caché) se cifra cuando SSL está en uso.

Quentin
fuente
25
+1. Los GET y POST, incluida la url, están encriptados. Solo agregaré: las herramientas como firebug y Tamper data pueden mostrar los resultados sin cifrar solo porque son parte del navegador y, por lo tanto, pueden interceptar la solicitud antes de que se cifre. Una vez enviado por cable, todo está encriptado.
Sripathi Krishnan
21
Para ser claros, todo menos el dominio está encriptado. Si alguien se topa con esto y desea una respuesta más detallada, vea answers.google.com/answers/threadview/id/758002.html
rcourtna
77
En aras de la exhaustividad, " Internet Explorer no admite nombres de usuario y contraseñas en las direcciones de sitios web (URL HTTP o HTTPS) " Parece que solo las versiones de Internet Explorer 3.0 a 6.0 admiten la siguiente sintaxis para URL HTTP o HTTPS: http (s): //username:password@server/resource.ext Nota: este cambio en el comportamiento predeterminado no afecta a otros protocolos. Por ejemplo, aún puede incluir información del usuario en una URL FTP después de instalar la actualización de seguridad 832894.
Lucas
Esta respuesta no contiene ninguna fuente creíble ni explicaciones adicionales.
Jens Piegsa
26

Sí, será encriptado.

Lo entenderás si simplemente revisas lo que sucede detrás de escena.

  1. El navegador o la aplicación primero desglosará la URL e intentará obtener la IP del host mediante una consulta DNS. es decir: se realizará una solicitud de DNS para encontrar la dirección IP del dominio (www.example.com). Tenga en cuenta que no se enviará ninguna otra información a través de esta solicitud.
  2. El navegador o la aplicación iniciará una conexión SSL con la dirección IP recibida de la solicitud de DNS. Se intercambiarán certificados y esto sucede a nivel de transporte. No se transferirá información de nivel de aplicación en este momento. Recuerde que la autenticación básica es parte de HTTP y HTTP es un protocolo de nivel de aplicación. No es una tarea de capa de transporte.
  3. Después de establecer la conexión SSL, ahora se pasarán los datos necesarios al servidor. es decir: la ruta o la URL, los parámetros y el nombre de usuario y contraseña básicos de autenticación.
Ruchira Randana
fuente
-5

No necesariamente cierto. Será encriptado en el cable, sin embargo, todavía aterriza en los registros de texto sin formato.

Brandon
fuente
17
¿Qué servidor web registra el nombre de usuario y las contraseñas de las solicitudes? Eso sería un infierno de un servidor web inseguro.
Andrew Barber
1
Sí, esto simplemente no es cierto. Probablemente sea posible indicarle a Apache que registre esta información, pero ciertamente no lo está haciendo de manera predeterminada.
DougW
27
@Brandon probablemente estaba pensando "en URL" en la cadena de consulta (por ejemplo,? User = bob & pw = 123hackmeplz). Eso podría terminar en los registros del servidor.
Mike Graf
55
Relacionado: "Cuando llama a esa URL en el cliente con, por ejemplo, curl, el nombre de usuario y la contraseña serán claramente visibles en la lista de procesos y podrían aparecer en el archivo de historial de bash". - stackoverflow.com/a/4981309
Hawkeye Parker
1
@ zb226 el autor de la pregunta mencionó específicamente poner las credenciales en la URL.
Lambart