https - nodejs - http request online
¿Los datos GET también están encriptados en HTTPS? (10)
HTTPS establece una conexión SSL subyacente antes de transferir cualquier información HTTP. Esto garantiza que todos los datos URL (con la excepción del nombre de host, que se usa para establecer la conexión) se transportan únicamente dentro de esta conexión cifrada y están protegidos de los ataques man-in-the-middle de la misma manera que los datos 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
Cuando tengas
https://encrypted.google.com/search?q=%s
La consulta %s
está encriptada? ¿O solo la respuesta? Si no es así, ¿por qué Google debe publicar su contenido público también con encriptación?
Acabo de conectarme a través de HTTPS a un sitio web y pasé varios parámetros GET. Luego usé wireshark para olfatear la red. Usando 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, ¡menos aún su contenido!
El SSL se lleva a cabo 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 puede recordar la sintaxis exacta, pero debe ser 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.
La URL en sí misma está encriptada, por lo que los parámetros en la cadena de consulta no viajan en plano 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 planea hacer algo como /login/?username=john&password=doe
, entonces no; usa un POST en su lugar.
La conexión se cifra antes de que se transmita la solicitud. Entonces, sí, la solicitud también está encriptada, incluida la cadena de consulta.
La parte de la URL después del nombre de host se envía de forma segura.
Por ejemplo, https://somewhere.com/index.php?NAME=FIELD
La parte /index.php?NAME=FIELD
está encriptada. The somewhere.com
no lo es.
La solicitud GET está encriptada cuando se utiliza 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 deseado (o directorio virtual) de la solicitud hasta que se haya descifrado.
La solicitud completa está encriptada, incluida la URL, e incluso el comando ( GET
). Lo único que una parte interviniente como un servidor proxy puede recopilar es la dirección de destino y el puerto.
Sin embargo, tenga en cuenta que el paquete Client Hello de un TLS handshake puede anunciar el nombre de dominio completamente calificado en texto sin formato a través de la extensión SNI (gracias @hafichuk), que es utilizado por todos los navegadores mainstream modernos, aunque algunos solo en sistemas operativos más nuevos.
EDITAR: (Dado que esto me acaba de dar 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 publica búsquedas y otro contenido en 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 .
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, 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 vea lo mismo.
Todo está encriptado, pero debe recordar que su consulta permanecerá en los registros del servidor y será accesible para varios analizadores de registro, etc. (que normalmente no es el caso con la solicitud POST).