2017-06-27 3 views
1

Sagen Benutzer eine Anfrage (Get | Post) zu http://example.com/datapassiert http-Umleitung, bevor Anfrage Körper gesendet wird oder nach?

jetzt habe ich Server-Setup, Nginx, um alle Anfragen an https umleiten.

so sendet der Browser erneut eine Anfrage aber über https-Protokoll.

meine Frage ist, sagte Server Browser zu umleiten direkt nach dem Lesen von http-Headern oder es hätte Daten im Körper der Anfrage bekommen und dann sagte Browser bitte senden Sie diese über https.

, weil, wenn letztere, sensible Daten bereits über unsichere Methode gesendet wurden.

Ich verstehe, um dies zu verhindern kann ich Umleitung in HTML-Datei enthalten, gibt es andere Methoden.

+1

* "Ich verstehe, um dies zu verhindern, ich kann Umleitung in HTML-Datei enthalten, ..." * - Ich bezweifle, dass dies helfen wird. Wenn Sie sicherstellen möchten, dass keine sensiblen Daten mit HTTP übertragen werden, müssen Sie sicherstellen, dass kein Versuch unternommen wird, die Daten mit HTTP an erster Stelle zu senden. Was hilfreich ist, sind HSTS-Header, so dass (zumindest die unterstützten Browser) HTTP nach dem ersten Besuch niemals versuchen werden oder dass Ihr Server nur HTTPS und nicht HTTP unterstützt, d. H. Dass TCP-Verbindungen zum HTTP-Port bereits fehlschlagen. –

+0

Ich meine, wenn Benutzer besteht auf Senden über http dann nichts kann ich tun, könnte ich über HSTS zwingen, es über HTTPS zu senden und Hilfe bei der automatischen Umleitung bei Server-Software (nginx) etc. –

Antwort

2

Es spielt keine Rolle, ob der Server es liest, weil der Client es vielleicht trotzdem gesendet hat.

Zu dem Zeitpunkt, wenn der Server die Header gelesen hat, hat der Client bereits die Header gesendet (natürlich), aber es hat auch gesendet einige oder alle der Körper.

Wie viel vom Hauptteil vom Client gesendet wurde, hängt nicht von HTTP ab, sondern vom zugrunde liegenden TCP-Protokoll. Es wird durch Variablen wie das Empfangsfenster, das Staufenster und die Größe der Header und des Körpers vorgegeben.

See this great article für eine Erklärung über Überlastung/Empfangsfenster in TCP.

+0

bevor HTTP-Anfrage passiert, Handshake tritt bei Verwendung https, wo einige Informationen über https config ausgetauscht wird .. Nun, wenn nicht mit https Server könnte vielleicht noch sagen, hey ich möchte SSL Handshake tun, so erneut über https. –

+0

@MuhaMmadUmer gibt es keinen HTTP-Handshake, nur TCP-Handshake. Die Weiterleitung erfolgt auf der HTTP-Schicht, sodass der Client bereits Daten gesendet hat –

Verwandte Themen