Wenn du bekommst
https://encrypted.google.com/search?q=%s
Die %s
Abfrage ist verschlüsselt? Oder nur die Antwort? Wenn dies nicht der Fall ist, warum sollte Google seine öffentlichen Inhalte auch verschlüsseln?
Wenn du bekommst
https://encrypted.google.com/search?q=%s
Die %s
Abfrage ist verschlüsselt? Oder nur die Antwort? Wenn dies nicht der Fall ist, warum sollte Google seine öffentlichen Inhalte auch verschlüsseln?
Antworten:
Die gesamte Anforderung wird verschlüsselt, einschließlich der URL und sogar des Befehls ( GET
). Das einzige, was eine intervenierende Partei wie ein Proxyserver ermitteln kann, ist die Zieladresse und der Port.
Beachten Sie jedoch, dass das Client-Hello-Paket eines TLS-Handshakes den vollständig qualifizierten Domänennamen über die SNI- Erweiterung im Klartext ankündigen kann (danke @hafichuk) ankündigen kann, die von allen modernen Mainstream-Browsern verwendet wird, einige jedoch nur unter neueren Betriebssystemen.
EDIT: (Da ich gerade ein "Good Answer" -Abzeichen bekommen habe, sollte ich wohl die gesamte Frage beantworten ...)
Die gesamte Antwort wird ebenfalls verschlüsselt. Proxies können keinen Teil davon abfangen.
Google liefert Suchanfragen und andere Inhalte über https, da nicht alle öffentlich sind. Möglicherweise möchten Sie auch einige öffentliche Inhalte vor einem MITM verbergen . In jedem Fall ist es am besten, Google selbst antworten zu lassen .
Die URL selbst ist verschlüsselt, sodass die Parameter in der Abfragezeichenfolge nicht einfach über die Leitung übertragen werden.
Beachten Sie jedoch, dass URLs, einschließlich der GET-Daten, häufig vom Webserver protokolliert werden, während dies bei POST-Daten selten der Fall ist. Wenn Sie also vorhaben, so etwas zu tun /login/?username=john&password=doe
, dann tun Sie es nicht. Verwenden Sie stattdessen einen POST.
HTTPS Stellt eine zugrunde liegende SSL-Verbindung her, bevor HTTP-Daten übertragen werden. Dadurch wird sichergestellt, dass alle URL-Daten (mit Ausnahme des Hostnamens, der zum Herstellen der Verbindung verwendet wird) ausschließlich innerhalb dieser verschlüsselten Verbindung übertragen werden und wie alle HTTPS-Daten vor Man-in-the-Middle-Angriffen geschützt sind.
Das Obige ist Teil einer SEHR umfassenden Antwort von Google Answers, die sich hier befindet:
http://answers.google.com/answers/threadview/id/758002.html#answer
Der Teil der URL nach dem Hostnamen wird sicher gesendet.
Beispielsweise, https://somewhere.com/index.php?NAME=FIELD
Das /index.php?NAME=FIELD
Teil ist verschlüsselt. Das somewhere.com
ist nicht.
Alles ist verschlüsselt, aber Sie müssen bedenken, dass Ihre Abfrage in den Protokollen des Servers verbleibt und für verschiedene Protokollanalysatoren usw. zugänglich ist (was bei POST-Anforderungen normalerweise nicht der Fall ist).
Ja, es ist sicher. SSL verschlüsselt alles.
Auszug aus der POST-Anfrage:
POST /foo HTTP/1.1
... some other headers
Auszug aus der GET-Anfrage:
GET /foo?a=b HTTP/1.1
... some other headers
In beiden Fällen wird alles, was auf dem Socket gesendet wird, verschlüsselt. Die Tatsache, dass der Client während einer GET-Anfrage Parameter in seinem Browser sieht, bedeutet nicht, dass ein Mann in der Mitte dasselbe sehen würde.
Ich habe gerade über HTTPS eine Verbindung zu einer Website hergestellt und eine Reihe von GET-Parametern übergeben. Ich habe dann Wireshark benutzt, um das Netzwerk zu schnüffeln. Über HTTP wird die URL unverschlüsselt gesendet, was bedeutet, dass ich alle GET-Parameter in der URL leicht sehen kann. Mit HTTPS ist alles verschlüsselt und ich kann nicht einmal sehen, welches Paket der GET-Befehl ist, geschweige denn dessen Inhalt!
Das SSL findet vor dem Header-Parsing statt. Dies bedeutet:
Client creates Request
Request gets encrypted
Encrypted request gets transmitted to the Server
Server decrypts the Request
Request gets parsed
Eine Anfrage sieht ungefähr so aus (ich kann mich nicht an die genaue Syntax erinnern, aber diese sollte nah genug sein):
GET /search?q=qwerty HTTP/1.1
Host: www.google.de
Aus diesem Grund ist es auch problematisch, unterschiedliche SSL-Zertifikate für mehrere Hosts auf derselben IP zu haben. Der angeforderte Hostname ist erst nach der Entschlüsselung bekannt.
HTTP/1.1
kommt am Ende der ersten Zeile.
Die GET-Anforderung wird bei Verwendung von HTTPS verschlüsselt. Aus diesem Grund müssen gesicherte Websites eine eindeutige IP-Adresse haben. Der beabsichtigte Hostname (oder das virtuelle Verzeichnis) kann erst nach der Entschlüsselung aus der Anforderung abgerufen werden.