Pregunta ¿Están encriptadas las URL HTTPS?


¿Están todas las URL encriptadas cuando se utiliza el cifrado TLS / SSL (HTTPS)? Me gustaría saber porque quiero que todos los datos de URL estén ocultos cuando se usa TLS / SSL (HTTPS).

Si TLS / SSL le proporciona el cifrado total de URL, entonces no tengo que preocuparme por ocultar información confidencial de las URL.


764
2018-01-31 21:15


origen


Respuestas:


Sí, la conexión SSL se encuentra entre la capa TCP y la capa HTTP. El cliente y el servidor primero establecen una conexión segura TCP encriptada (a través del protocolo SSL / TLS) y luego el cliente enviará la solicitud HTTP (GET, POST, DELETE ...) a través de esa conexión TCP encriptada.


721
2018-01-31 21:17



Como nadie proporcionó una captura de cables, aquí hay uno.
Nombre del servidor (la parte de dominio de la URL) se presenta en ClientHello paquete, en Texto sin formato.

A continuación, se muestra una solicitud del navegador para:
https://i.stack.imgur.com/path/?some=parameters&go=here

ClientHello SNI Ver esta respuesta para obtener más información sobre los campos de versión de TLS (hay 3 de ellos, ¡no versiones, campos que contienen un número de versión!)

De https://www.ietf.org/rfc/rfc3546.txt:

3.1. Indicación del nombre del servidor

[TLS] no proporciona un mecanismo para que un cliente le diga a un servidor   el nombre del servidor al que está contactando.  Puede ser deseable para   clientes para proporcionar esta información para facilitar seguridad   conexiones a servidores que alojan múltiples servidores "virtuales" en un   única dirección de red subyacente.

Para proporcionar el nombre del servidor, los clientes PUEDEN incluir un   extensión del tipo "server_name" en el cliente (extendido) hola. 


En breve:

  • FQDN (la parte de dominio de la URL) MAYO ser transmitido en claro dentro de ClientHello paquete si se usa la extensión SNI

  • El resto de la URL (/path/?some=parameters&go=here) no tiene nada que hacer dentro ClientHello ya que la URL de solicitud es una cosa HTTP (OSI Layer 7), por lo tanto, nunca aparecerá en un handshake TLS (Capa 4 o 5). Eso vendrá más adelante en una GET /path/?some=parameters&go=here HTTP/1.1 Solicitud HTTP DESPUÉS el seguro El canal TLS está establecido.


RESUMEN EJECUTIVO

El nombre de dominio PUEDE transmitirse en forma clara (si se utiliza la extensión SNI en el protocolo de enlace TLS), pero la URL (ruta y parámetros) siempre está encriptada.


275
2017-08-02 18:26



Como el otro  respuestas Ya he señalado, https "URLs" de hecho están encriptados. Sin embargo, su solicitud / respuesta de DNS al resolver el nombre de dominio probablemente no sea así, y por supuesto, si estuviera usando un navegador, sus URL también podrían ser grabadas.


138
2018-01-31 21:26



Toda la solicitud y respuesta está encriptada, incluida la URL.

Tenga en cuenta que cuando usa un Proxy HTTP, conoce la dirección (dominio) del servidor de destino, pero no conoce la ruta solicitada en este servidor (es decir, la solicitud y la respuesta siempre están encriptadas).


93
2018-01-31 21:17



Estoy de acuerdo con las respuestas anteriores:

Para ser explícito:

Con TLS, la primera parte de la URL (https://www.example.com/) sigue siendo visible a medida que construye la conexión. La segunda parte (/ herearemygetparameters / 1/2/3/4) está protegida por TLS.

Sin embargo, hay una serie de razones por las que no debe poner parámetros en la solicitud GET.

Primero, como ya lo mencionaron otros: - fuga a través de la barra de direcciones del navegador - fuga a través de la historia

Además, tiene fugas de URL a través del refereador http: el usuario ve el sitio A en TLS y luego hace clic en un enlace al sitio B. Si ambos sitios están en TLS, la solicitud al sitio B contendrá la URL completa del sitio A en el parámetro referer de la solicitud. Y el administrador del sitio B puede recuperarlo de los archivos de registro del servidor B).


84
2017-07-28 06:49



Una adición a la respuesta útil de Marc Novakowski: la URL se almacena en los registros en el servidor (por ejemplo, en / etc / httpd / logs / ssl_access_log), por lo que si no desea que el servidor mantenga la información durante más tiempo término, no lo pongas en la URL.


45
2017-11-02 14:03



Si y no.

La porción de dirección del servidor NO está encriptada ya que se usa para configurar la conexión.

Esto puede cambiar en el futuro con SNI y DNS cifrados, pero a partir de 2018 ambas tecnologías no se usan comúnmente.

La ruta, la cadena de consulta, etc. están encriptados.

Tenga en cuenta que para las solicitudes GET, el usuario aún podrá cortar y pegar la URL fuera de la barra de direcciones, y probablemente no quiera poner información confidencial allí que pueda ser vista por cualquiera que mire la pantalla.


16
2018-01-31 21:20



Un tercero que está monitoreando el tráfico también puede determinar la página visitada al examinar su tráfico y compararlo con el tráfico que otro usuario tiene al visitar el sitio. Por ejemplo, si hubiera solo 2 páginas en un sitio, una mucho más grande que la otra, entonces la comparación del tamaño de la transferencia de datos indicaría qué página visitó. Hay formas en que esto podría ocultarse a un tercero, pero no son un comportamiento normal del servidor o del navegador. Ver por ejemplo este artículo de SciRate, https://scirate.com/arxiv/1403.0297.

En general, otras respuestas son correctas, aunque este documento muestra que las páginas visitadas (es decir, URL) se pueden determinar con bastante eficacia.


7
2017-08-14 16:03



Vinculación a mi respuesta en un pregunta duplicada. La URL no solo está disponible en el historial de los navegadores, sino que también se envía como el encabezado del Referente HTTP, que si usa contenido de terceros, expone la URL a fuentes fuera de su control.


3
2018-04-15 15:28