Cuando tengas
https://encrypted.google.com/search?q=%s
¿La %s
consulta está encriptada? ¿O solo la respuesta? Si no es así, ¿por qué Google debería servir su contenido público también con cifrado?
Cuando tengas
https://encrypted.google.com/search?q=%s
¿La %s
consulta está encriptada? ¿O solo la respuesta? Si no es así, ¿por qué Google debería servir su contenido público también con cifrado?
Respuestas:
Toda la solicitud está encriptada, incluida la URL e incluso el comando ( GET
). Lo único que puede obtener una parte interviniente, como un servidor proxy, es la dirección y el puerto de destino.
Sin embargo, tenga en cuenta que el paquete Client Hello de un protocolo de enlace TLS puede anunciar el nombre de dominio completo en texto sin formato a través de la extensión SNI (gracias @hafichuk), que es utilizado por todos los navegadores principales modernos, aunque algunos solo en sistemas operativos más nuevos.
EDITAR: (Dado que esto me dio una insignia de "Buena respuesta", creo que debería responder a toda la pregunta ...)
Toda la respuesta también está encriptada; los proxies no pueden interceptar ninguna parte de ella.
Google ofrece búsquedas y otro contenido a través de https porque no todo es público, y es posible que también desee ocultar parte del contenido público de un MITM . En cualquier caso, es mejor dejar que Google responda por sí mismo .
La URL en sí está encriptada, por lo que los parámetros en la cadena de consulta no viajan sin formato a través del cable.
Sin embargo, tenga en cuenta que las URL que incluyen los datos GET a menudo son registradas por el servidor web, mientras que los datos POST rara vez lo son. Entonces, si planeas hacer algo así /login/?username=john&password=doe
, entonces no lo hagas; use una POST en su lugar.
HTTPS Establece una conexión SSL subyacente antes de transferir cualquier dato HTTP. Esto garantiza que todos los datos de URL (con la excepción del nombre de host, que se utiliza para establecer la conexión) se transporten únicamente dentro de esta conexión cifrada y estén protegidos de ataques de intermediarios de la misma manera que cualquier dato HTTPS.
Lo anterior es parte de una respuesta MUY completa de Google Answers que se encuentra aquí:
http://answers.google.com/answers/threadview/id/758002.html#answer
La parte de la URL después del nombre del host se envía de forma segura.
Por ejemplo, https://somewhere.com/index.php?NAME=FIELD
La /index.php?NAME=FIELD
parte está encriptada. El somewhere.com
no es.
Todo está encriptado, pero debe recordar que su consulta permanecerá en los registros del servidor y será accesible para varios analizadores de registros, etc. (que generalmente no es el caso con la solicitud POST).
Sí, es seguro SSL encripta todo.
Extracto de la solicitud POST:
POST /foo HTTP/1.1
... some other headers
Extracto de la solicitud GET:
GET /foo?a=b HTTP/1.1
... some other headers
En ambos casos, todo lo que se envía en el socket está encriptado. El hecho de que el cliente vea parámetros en su navegador durante una solicitud GET no significa que un hombre en el medio vería lo mismo.
Me conecté a través de HTTPS a un sitio web y pasé un montón de parámetros GET. Luego usé wireshark para oler la red. Al usar HTTP, la URL se envía sin cifrar, lo que significa que puedo ver fácilmente todos los parámetros GET en la URL. Usando HTTPS, todo está encriptado y ni siquiera puedo ver qué paquete es el comando GET, ¡mucho menos su contenido!
El SSL tiene lugar antes del análisis del encabezado, esto significa:
Client creates Request
Request gets encrypted
Encrypted request gets transmitted to the Server
Server decrypts the Request
Request gets parsed
Una solicitud se parece a esto (no puedo recordar la sintaxis exacta, pero debería estar lo suficientemente cerca):
GET /search?q=qwerty HTTP/1.1
Host: www.google.de
Esta es también la razón por la cual tener diferentes certificados SSL para varios hosts en la misma IP es problemático, el nombre de host solicitado no se conoce hasta el descifrado.
HTTP/1.1
viene al final de la primera línea.
La solicitud GET se cifra cuando se usa HTTPS; de hecho, esta es la razón por la cual los sitios web seguros deben tener una dirección IP única; no hay forma de obtener el nombre de host (o directorio virtual) deseado de la solicitud hasta después de que se haya descifrado.