Uploaded by geborgenwohlriechenderadler

NWT HTTP S ReckziegelRath (1)

advertisement
NWT
HTTP(S)
3CHIT
HTTP und HTTPS
HTTP steht für Hyper Text Transfer Protocol ist ein Protokoll welches sich im OSI/ISO-Modell auf der
7. Ebene, der Anwendungsschicht, befindet. Als Transport benutzt es TCP über Port 80 und wird zur
Übertragung von Daten verwendet. Es ist ein zustandsloses Protokoll, welches für die Übertragung
von HTML-Dokumenten von Tim-Berners Lee entwickelt wurde.
Ab HTTP/3 (Version 3) wird TCP durch das Netzwerkprotokolle namens QUIC ersetzt und kann eine
deutlich höhere Geschwindigkeit erzielt werden.
URI
URI steht für Uniform Ressource Identifier und besteht aus dem Protokoll, Domain, Port und Pfad.
Die Syntax einer URI sieht folgendermaßen aus:
schema „:“ hier-part [„?“ query][„#“ fragment]
Diese kompliziert aussehende Syntax kommt jeden Tag uns unterbewusst unter die Augen. Ein paar
Beispiele für eine URI (URL):
•
•
https://www.google.com/search?q=YouTube
https://datatracker.ietf.org/doc/html/rfc2616#page-36
HTTP-Request
Eine HTTP-Request (Anfrage) wird vom Client, der meist ein Webbrowser ist, an den Webserver
versendet. Da HTTP ein staatenloses und verbindungsloses Protokoll ist muss für jede Anfrage (einer
Ressource) eine neue Verbindung aufgebaut werden. HTTP/2 (Version 2) führte Multiplexing ein,
welches den Browser erlaubt mehrere Anfragen pro Verbindung zu senden.
Wenn ein Webbrowser eine Ressource (HTML-Datei) von Webserver abruft holt er sich zuerst das
HTML-Dokument. Darin erkennt er, dass das HTML-Dokument noch weitere Dateien wie CSS,
JavaScript, Bilder, etc. benötigt. Multiplexing erlaubt hier mehrere Anfragen auf derselben
Verbindung wo egal ist in welcher Reihenfolge die angefragten Ressourcen wieder ankommen.
Anfragemethoden
Anfragemethoden teilen den Server mit, welche Aktion der Client ausführen möchte. Insgesamt gibt
es aktuell 9 Anfragemethoden:
•
•
•
•
•
•
•
•
•
GET: Anfrage von einer Ressource
HEAD: Anfrage von einer Ressource, nur ohne Body (Anfrage der Metadaten)
POST: erstellt eine neue Ressource ohne Identifier (nicht idempotent)
PUT: erstellt eine neue Ressource mit einen bekannten Identifier (idempotent)
DELETE: Ressource am Webserver löschen
CONNECT: Benutzt bei Proxyservern, damit diese die Anfrage nicht verstehen (verschlüsselt)
OPTIONS: Liefert eine Liste vom Server mit seinen Unterstützen Methoden
TRACE: Liefert Anfrage so zurück wie erhalten, um zu überprüfen, ob sie verändert, wurde
PATCH: Änderung des Inhaltes einer Ressource
S.R. und J.R.
1
NWT
HTTP(S)
3CHIT
Aufbau eines HTTP-Requests
Eine HTTP-Request beginnt zuerst mit der Anfragemethode, der
URI, der HTTP-Version und zusätzlichen Request-Headers.
Der Einsatz des Bodys (Nachrichtenrumpf) ist je
Anfragemethode unterschiedlich. Im nebenstehenden
Beispiel wird der Body logischerweise nicht verwendet. Bei
Einsatz der Methode „POST“, die in der Lage ist,
Formulardaten in Key-Value-Pairs („key=value“) zu
versenden, werden die Daten im Body angegeben.
„GET“ ist ebenfalls in der Lag Formulardaten zu übertragen, indem es die Key-Value-Pairs an die URI
dranhängt. Der Beginn wird durch das „?“ gekennzeichnet und jedes Key-Value-Pair wird durch ein
„&“ getrennt. (https://www.google.com/search?q=YouTube) Am Server kann dann durch z.B. PHP
die übertragenen Daten weiterverarbeitet werden. (Datenbank Eintrag, …). Nachteil ist dabei, dass
die Eingabe in der Browser-Historie gespeichert bleibt, was bei Passwörtern nicht erwünscht ist.
HTTP-Headers
Die HTTP-Headers befinden sich in jeder Nachricht und übertragen zusätzliche Informationen. Ein
Header beginnt mit seinen Case-Insensitiven Namen und endet mit dem Wert des Headers welcher
mit einen „:“ vom Namen getrennt wird. Beispiele für Header sind:
•
•
•
Host
o Ermöglicht mehrerer Webserver mit unterschiedlichen Namen auf gleicher IP
Accept
o Gibt an, welchen Dateityp der Client versteht (MIME-Types)
Content-Length
o Die Größe des Bodys
HTTP-Statuscodes
Statuscodes sind ein Teil der HTTP-Response, um den Client über den Stand seiner HTTP-Request zu
informieren. Sie werden in 5 Hauptgruppen unterteilt (darunter 1 Beispiel davon):
•
•
•
•
•
1xx: Informational
➢ Anfrage erhalten
▪ 100 Continue; Anfrage soweit korrekt und vom Server nicht abgelehnt
2xx: Success
➢ Anfrage erhalten, akzeptiert und verstanden
▪ 200 OK; Anfrage erfolgreich
3xx: Redirection
➢ Weiter Aktion nötig, um Anfrage abzuschließen
▪ 301 Moved Permanently; Die Ressource wurde auf eine neue URI
verschoben welche im Header mit übertragen wird
4xx: Client Error
➢ Anfrage enthält falsche Syntax oder kann nicht verstanden werden
▪ 404 Not found; Die Ressource wurde unter der URI nicht gefunden
5xx: Server Error
➢ Der Server konnte eine gültige Anfrage nicht verarbeiten
▪ 501 Not Implemented; Der Server unterstützt die Anfragemethode nicht
S.R. und J.R.
2
NWT
HTTP(S)
3CHIT
Aufbau einer HTTP-Response
Nach Absenden einer HTTP-Request, sendet der Webserver eine HTTP-Response zurück. Diese
enthält:
•
•
•
•
Die angeforderte Ressource im Body (falls vorhanden)
Statuscode und Statustext
HTTP-Version
HTTP-Headers des Servers
Im Folgenden ein Beispiel für eine Response.
Man sieht also den Header mit verschiedenen Informationen wie den Zeitstempel, Content-Type,
den verwendeten Webserver, etc. Als Status Line wird die HTTP-Version inklusive des Status-Codes,
in diesem Fall 200 OK (erfolgreiche Anfrage) gesendet.
Im Body befindet sich dann die angeforderte Ressource, was in diesem Fall ein HTML-Dokument ist.
HTTPS
HTTPS steht für Hyper Text Transfer Protocol Secure und ist sozusagen der Bruder von HTTP. Das
Protokoll funktioniert im Grunde genau exakt wie HTTP, mit dem Unterschied das hierbei die
Übertragung verschlüsselt und nicht wie bei HTTP in Textform stattfindet. Somit ist HTTPS rein eine
Erweiterung, um einen höheren Sicherheitsfaktor zu gewährleisten, was vor allem in der heutigen
Welt bei der weiten Verwendung von Online-Banking und anderen sensiblen Datenübertragungen
sehr wichtig ist. HTTPS arbeitet ebenfalls mit TCP auf Port 443.
Zur Verschlüsselung wird aktuell TLS verwendet, welches der Nachfolger von SSL ist. TLS steht für
Transport Layer Security, wo TLS v1.0 der verbesserten Version von SSL 3.0 entspricht. Alles unter TLS
v1.3 wird als Sicherheitslücke angesehen.
TLS
TLS verwendet die asymmetrische Verschlüsselung, wo ein Gerät einen öffentlichen und privaten
Schlüssel besitzt. Dabei kann eine Nachricht, die mit dem öffentlichen Schlüssel einer Maschine
verschlüsselt wurde, nur wieder mit dem privaten Schlüssel entschlüsselt werden. TLS verschlüsselt
jede gesendete Nachricht mithilfe zwei Schlüsseln, die vom Master-Secret abgeleitet werden. Das
S.R. und J.R.
3
NWT
HTTP(S)
3CHIT
Master-Secret wird durch Zufallswerten generiert. Um das Master-Secret bzw. die benötigten Werte
zur Generierung sicher zwischen beiden Geräten auszutauschen, gibt es verschiedene Verfahren wie
RSA oder den Diffie-Hellman-Schlüsselaustausch.
Zertifikat
Ein Zertifikat ist eine Datei, welche mehrere Informationen enthalten. Darunter den Namen des
Ausstellers und der Besitzer des Zertifikates, des Weiteren auch die Gültigkeitsdauer und die
Fingerabdrücke für die Verschlüsselung. Zertifikate werden von Zertifizierungsstellen ausgegeben
welche oft Gebühren dafür verlangen. Mit dem Zertifikat wird der Domain ein einzigartiger Public
Key zugeschrieben, welcher dann vom aufrufenden Browser überprüft wird. Ein gültiges Zertifikat
garantiert die Identität des Servers, und verhindert Man In The Middle – Angriffe.
Das Zertifikat wird dann für die asymmetrische Verschlüsselung verwendet.
Ob eine Website ein gültiges Zertifikat besitzt, kann an dem Schlüsselsymbol in der Suchleiste
erkannt werden.
Das Zertifikat kann mit einem Klick auf das Schloss eingesehen werden. Darin stehen alle Details über
die Gültigkeit, den Austeller, den Besitzer, Fingerabrücke, etc.
S.R. und J.R.
4
Download