Pythons Modul http.server kann statische Dateien für einen kurzlebigen Test oder eine vertrauenswürdige Übertragung bereitstellen. Es ist kein Produktionswebserver und bietet weder Authentifizierung, Autorisierung, TLS, Ratenbegrenzung noch gehärtete Verarbeitung feindlichen Datenverkehrs.
Netzwerkfreigabe · Lektion 3
Einfacher HTTP-Server
Lerne, mit Pythons HTTP-Server vorübergehend ein kontrolliertes Verzeichnis bereitzustellen.
Ein Freigabeverzeichnis vorbereiten
Erstelle ein eigenes Verzeichnis, das nur zur Freigabe bestimmte Dateien enthält. Prüfe vor dem Start versteckte Dateien, symbolische Links, Berechtigungen und vertrauliche Metadaten. Stelle weder ein Home-Verzeichnis noch ein Repository-Stammverzeichnis, Anmeldedatenverzeichnis oder einen Systempfad bereit.
Verwende --directory, damit der freigegebene Stamm eindeutig ist:
$ python3 -m http.server 8000 --directory /srv/temporary-share
Wenn keine Indexdatei vorhanden ist, erzeugt das Modul normalerweise eine Verzeichnisauflistung. Jeder, der den Listener erreichen kann, kann möglicherweise bereitgestellte Inhalte aufzählen und herunterladen.
Warum solltest du --directory /srv/temporary-share verwenden?
Die lauschende Adresse steuern
Binde an Loopback, wenn nur derselbe Host eine Verbindung herstellen soll:
$ python3 -m http.server 8000 --bind 127.0.0.1 --directory /srv/temporary-share
Binde zur Freigabe in einem vertrauenswürdigen Netzwerk bewusst an eine geeignete Schnittstellenadresse und bestätige die Firewallrichtlinie. Ein Lauf ohne einschränkende Bindung lauscht gewöhnlich auf allen verfügbaren Schnittstellen und kann das Verzeichnis über das beabsichtigte Netzwerk hinaus offenlegen.
Wer kann normalerweise einen an 127.0.0.1 gebundenen Server erreichen?
Zugriff testen
Fordere vom bereitstellenden Host eine bekannte Datei an und untersuche die Antwort:
$ curl -f http://127.0.0.1:8000/example.txt
Verwende für einen autorisierten entfernten Test statt Loopback die ausgewählte Schnittstellenadresse. Bestätige sowohl, dass die beabsichtigte Datei zugänglich ist, als auch, dass eine Datei außerhalb des Dokumentstamms nicht zugänglich ist. Ein erfolgreicher Browseraufruf allein belegt weder angemessene Offenlegung noch Vertraulichkeit.
Welcher Port wird in python3 -m http.server 8000 ausdrücklich ausgewählt?
Stoppen und aufräumen
Führe den temporären Dienst in einem überwachten Terminal aus und beende ihn nach der Übertragung mit Ctrl-C. Überprüfe, dass der Listener verschwunden ist:
$ ss -ltn 'sport = :8000'
Entferne temporäre Kopien gemäß der Richtlinie zum Umgang mit Daten und nimm jede vorübergehende Firewallregel zurück. Verwende für dauerhafte, authentifizierte oder öffentlich erreichbare Verteilung einen gepflegten Server mit Zugriffskontrolle und TLS.
Was sollte nach Abschluss der vorübergehenden Übertragung geschehen?
Lektion abgeschlossen
Sie haben Einfacher HTTP-Server abgeschlossen
Du kannst nun einen temporären Python-HTTP-Server mit begrenzter Offenlegung ausführen.
Stelle nur ein eigenes, geprüftes Verzeichnis bereit.
Binde an die engstmögliche geeignete Adresse.
Teste beabsichtigten Zugriff und unbeabsichtigte Grenzen.
Stoppe den Listener und räume den temporären Zugang anschließend auf.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen