Quando você OBTER
https://encrypted.google.com/search?q=%s
A %s
consulta está criptografada? Ou apenas a resposta? Caso contrário, por que o Google deve veicular seu conteúdo público também com criptografia?
Quando você OBTER
https://encrypted.google.com/search?q=%s
A %s
consulta está criptografada? Ou apenas a resposta? Caso contrário, por que o Google deve veicular seu conteúdo público também com criptografia?
Respostas:
A solicitação inteira é criptografada, incluindo a URL e até o comando ( GET
). A única coisa que uma parte interveniente, como um servidor proxy, pode recolher é o endereço e a porta de destino.
Observe, no entanto, que o pacote Client Hello de um handshake TLS pode anunciar o nome de domínio totalmente qualificado em texto sem formatação através da extensão SNI (obrigado @hafichuk), que é usado por todos os navegadores mainstream modernos, embora alguns apenas em sistemas operacionais mais recentes.
EDIT: (Como isso acabou de me dar um distintivo de "Boa resposta", acho que devo responder a pergunta inteira ...)
A resposta inteira também é criptografada; proxies não podem interceptar nenhuma parte dele.
O Google exibe pesquisas e outros conteúdos por https porque nem todo é público, e você também pode ocultar parte do conteúdo público de um MITM . De qualquer forma, é melhor deixar o Google responder por si próprio .
A URL em si é criptografada, portanto, os parâmetros na cadeia de caracteres de consulta não trafegam de maneira simples pelo fio.
No entanto, lembre-se de que os URLs, incluindo os dados GET, geralmente são registrados pelo servidor da Web, enquanto os dados POST raramente o são. Então, se você planeja fazer algo assim /login/?username=john&password=doe
, não faça; use um POST.
HTTPS Estabelece uma conexão SSL subjacente antes que qualquer dado HTTP seja transferido. Isso garante que todos os dados da URL (com exceção do nome do host, usado para estabelecer a conexão) sejam transportados apenas dentro dessa conexão criptografada e protegidos contra ataques do tipo intermediário da mesma maneira que qualquer dado HTTPS.
O texto acima faz parte de uma resposta MUITO abrangente do Google Answers, localizada aqui:
http://answers.google.com/answers/threadview/id/758002.html#answer
A parte da URL após o nome do host ser enviado com segurança.
Por exemplo, https://somewhere.com/index.php?NAME=FIELD
A /index.php?NAME=FIELD
peça está criptografada. O somewhere.com
não é.
Tudo é criptografado, mas você precisa se lembrar de que sua consulta permanecerá nos logs do servidor e estará acessível a vários analisadores de logs etc. (o que geralmente não é o caso da solicitação POST).
Sim, é seguro. O SSL criptografa tudo.
Trecho da solicitação POST:
POST /foo HTTP/1.1
... some other headers
Trecho da solicitação GET:
GET /foo?a=b HTTP/1.1
... some other headers
Nos dois casos, tudo o que é enviado no soquete é criptografado. O fato de o cliente ver parâmetros em seu navegador durante uma solicitação GET não significa que um homem no meio verá o mesmo.
Acabei de conectar via HTTPS a um site e passei vários parâmetros GET. Eu usei o wireshark para cheirar a rede. Usando HTTP, o URL é enviado sem criptografia, o que significa que posso ver facilmente todos os parâmetros GET no URL. Usando HTTPS, tudo é criptografado e não consigo nem ver qual pacote é o comando GET, quanto mais seu conteúdo!
O SSL ocorre antes da análise do cabeçalho, isto significa:
Client creates Request
Request gets encrypted
Encrypted request gets transmitted to the Server
Server decrypts the Request
Request gets parsed
Uma solicitação é mais ou menos assim (não consigo lembrar a sintaxe exata, mas isso deve estar próximo o suficiente):
GET /search?q=qwerty HTTP/1.1
Host: www.google.de
É também por isso que ter Certificados SSL diferentes para vários hosts no mesmo IP é problemático, o Nome do host solicitado não é conhecido até a descriptografia.
HTTP/1.1
vem no final da primeira linha.
A solicitação GET é criptografada ao usar HTTPS - na verdade, é por isso que sites seguros precisam ter um endereço IP exclusivo - não há como obter o nome do host (ou diretório virtual) desejado a partir da solicitação até que ela seja descriptografada.