Henryk Plötz: Probleme mit POST Header (multipart/form-data)

Beitrag lesen

Moin,

Naja, ich bezweifele das Du da was erkannt hättest,

Och, ich hätte RFC 791 und 793 gezückt und mich gefreut die mal auf einen Hexdump loslassen zu können.

zumindest mein sniffer schreibt da grostes Kauderwelsch! "POST" ist das erste Wort was man lesen kann.

Nimm doch Ethereal.

Leeider kann ich keien binärdaten lesen, oder was auch immer diese Kauderwelsch zu sagen hatte!

Das wären die IP und TCP-Header gewesen.

Also verstehe ich das Richtig das der Port nichts mit dem http-header zu tun hat sondern nur mit dem TCP/IP header und nur darin enthalten ist? Denn der HTTP Header fängt ja erst bei "POST..." an, oder?

Genau, IP ist verbindunglos und sorgt bei jedem Paket dafür, dass es am richtigen Rechner ankommt. Danach kommt der TCP-Header der die Portnummern enthält und erst dann kommen die Nutzdaten, in diesem Fall HTTP.

Ja, ich habe einfach beides versucht, und ich habe auch vorher in der  Doku gelesen, habe ss:// auch als erstes verucht, ging ja nicht, also habe ich mehr oder weniger aus Verzweiflung mal https:// probiert ;-) Aber ich habe das schon richtig verstanden, nur ein ssl:// davor und den SSL-Port und schon geht derselbe header über SSL, oder?

Ja genau. Bloß entweder ist das noch nicht fertig oder es muss beim Kompilieren extra eingeschaltet werden. Der kompilierte Snapshot scheint nur allgemeine OpenSSL-Funktionen zu enthalten.

Jetzt Frage ich mich wie man deises Beispiel auf 2 Servern verwenden kann, halt auf dem einen verschlüsseln, auf dem anderen entschlüsseln. Das ganze ist abgängig von 3 Variablen:

Der geheime Schlüssel ist in dem Beispiel very secret key. Den musst du unbedingt sicher von einem Rechner auf den anderen bringen, und der darf nicht öffentlich bekannt werden.

Wobei mir das Beispiel nicht wirklich gefällt, da da der Schlüssel aus einer MD5-Summe gemacht wird und die enthält leider (wie hier schon öfter zu lesen war) ein arg beschränktes Alphabet. Führ' lieber erstmal die ersten paar Zeilen aus und lass dir $ks ausgeben (ich tippe darauf, dass er 32 ausgeben wird) und besorg dir soviele zufällige Bytes. Die benutzt du dann als Schlüssel und weist sie an $key zu, auf der anderen Seite das gleiche.

Dann wäre da noch $iv, der Initialization Vector. Der wird bei jedem Verschlüsselungsvorgang zufällig erzeugt und den solltest du einfach so im Klartext ans andere Ende übertragen. $td ist bloss eine Ressource und muß also mit der angegebenen Funktion am anderen Ende neu erzeugt werden.

openssl muß ich gestehen verstehe ich nich nicht so recht wie ich das anwenden soll: http://www.php.net/manual/en/function.openssl-seal.php, da ist ja auch ein nettes Beispiel, da steht halt wie ich einen schlüssel erstelle, und dann free key, aber was sollte die ganze Aktion jetzt? Sende ich mit openssl die daten direkt wie mit fsockopen, und der SSL-Server erkennt das selbst und ich habe auf dem entgegennehmenden PHP-Script die Daten ganz normal zur Verefügung, doer muß ich auch hier den Datenstring verschlüsseln, was ja eigentlich reichen würde!

Für das OpenSSL-Gezeugs musst du dir erstmal ein Schlüsselpaar machen, wobei der Sender den öffentlichen Schlüssel bekommt und der Empfänger den privaten Schlüssel (der geheim bleiben muß). Beim Senden öffnest du dann den öffentlichen Schlüssel, nimmst openssl_seal() und schmeisst es auf den Schlüssel und den Klartext. Zurück kriegst du einen verschlüsselten Sitzungsschlüssel und den Geheimtext, die du beide an den Empfänger überträgst. Der öffnet seinen geheimen Schlüssel und schmeisst openssl_open() auf den Geheimtext, diesen Schlüssel und den verschlüsselten Sitzungsschlüssel und kriegt den Klartext zurück.

--
Henryk Plötz
Grüße von der Ostsee