Sicherer Datentransfer von PHP (Server A) zu PHP (Server B)

xamunrax

Erfahrenes Mitglied
Hallo,

ich möchte einfach noch ein paar Meinungen und Anregungen haben, wie man Daten zwischen einem PHP-Script (auf Server A) und einem anderen PHP-Script (auf Server B) ohne die Seite zu wechseln überträgt. Da es sich um äusserst sensibele Daten handelt, soll der Weg möchlichst sicher sein.

Ich bin auf eure Ideen und Vorschläge äusserst gespannt.

MfG Marco
 
Soweit ich weiß kann man mit PHP eine Verbindung zu einem FTP-Server aufbauen und somit Daten versenden. Sicherer wäre es dann noch, wenn man SFTP (Secure FTP) verwendet.
 
Da ich mich mit sowas noch nicht befasst habe, kann ich dir nichts genaues sagen. Aber ich würd bei sowas spontan an Ajax und SSL denken. Vielleicht findest du bei google oder sogar hier auf dem Board was genaueres dazu.
Ansonsten bin ich auf andere oder genauere Lösungen gespannt.

MfG ichnicht
 
ja, man kann aber auch Text (Variablen) verschlüsseln.
Beim Datei-Verschlüsseln, lest das Programm ja auch nur den Text ein und übergibt ihn einer Funktion..

MfG
Philipp
 
Danke erstmal für die Antworten und das "geopferte" Wissen ;-)

Okay nach Tagen des Überlegens, bin ich auf eine Lösung gekommen und auf der anderen Seite wieder auf ein Problem...

Also meine Lösung wäre zum Beispiel (stark vereinfacht):

Verschlüsselung:

$crypt['a'] = 6931;
$result = md5($crypt['a']);

und das dann auf beiden Servern ab in die DB.

Das wäre jetzt für den Buchstaben a, soweit auch kein Problem, allerdings sind die zu übertragenden Daten zwischen 800 und 2000 Zeichen lang, hmm.. und das sollte eigentlich eben mal so im Hintergrund passieren ;-)

Dann noch der Weg der Übertragung, hier gibt es ja meines Wissens nach nicht allzu viele Möglichkeiten, entweder per URL (&variable=....), das sollte aber nicht gehen bei 2000 Zeichen (eigentlich noch weit mehr wegen der md5-Verschlüssung).
Oder man überträgt es per Session, wo ich nicht genau weiss ob da die Datenmengen begrenzt sind und ob das Server übergreifend läuft.
Oder man packt es in eine Datei und verschickt diese, hier ist das Problem das es ein wenig zulang dauert, zumal mein Server nach Schätzungen etwa 30-140 Anfragen rund um die Uhr bearbeiten muss... (Server, Traffic etc. ist alles in entsprechender größe vorhanden)

Ich möchte auch gar keinen fertigen Code oder irgendwelche Schnippsel, nur da ich mich damit noch nie beschäftigt habe fehlt mir da das Wissen.

PS: Ich hoffe ich habe mein Problem nun genauer erleutert.


Gruß,
Marco
 
das ist keine gute "Verschlüsselung".. mit häufigkeitsanalyse hat man das relativ schnell geknackt...

verwende schon existierende Verfahren (um sicher zu gehen): wie z.B. AES
 
Hi, wenn ich das richtig verstanden habe, suchst du also einen Weg, um Daten (Variablen) von einem Server an einen anderen zu schicken. In diesem Fall würde ich zunächst einmal empfehlen SSL zu verwenden, da du dann über HTTPS eine sichere verbindung aufbauen kannst, über die verschlüsselt übertragen werden kann.

Des weiteren scheinst du ja ein Verschlüsselungsverfahren zu brauchen (vor allen dann, wenn du kein HTTPS benutzt), das du auf dem anderen Server wieder entschlüsseln kannst, MD5 macht da also keinen Sinn, da es sich dabei um eine Hashfunktion handelt, die man nicht eindeutig entschlüsseln kann.

Meine Empfehlung: Nutze entweder die mcrypt Extension von PHP, die dir jede Menge Verschlüsselungsverfahren bietet, oder suche nach einer in PHP geschriebenen Implementierung von Blowfish / Twofish / AES oder einem ähnlichen Algorithmus.

Das Senden der Daten kannst du sehr einfach über fsockopen() oder eine beliebige HTTP Client Klasse (z.B. Zend_Http_Client) machen, es gib hier auch ein Tutorial, das beschreibt, wie man HTTP Anfragen erzeugt und sendet.

EDIT: Zum Problem der Datenübertragung: Am einfachsten ist es, die Daten mittels einer POST Anfrage zu übertragen, dann kannst du sie nämlich einfach in den Body der HTTP Anfrage schreiben, also etwa so:
Code:
POST /test.php HTTP/1.1
Host: www.test.de
Content-Type: text/plain
Content-Length: XXX

Und hier dann deine Daten...
Auf Serverseite erhältst du dann die übertragenen Daten mittels
PHP:
$daten = file_get_contents('php://input');
 
Zuletzt bearbeitet:
Du musst erst einmal wissen, dass Variablen nicht von einem Server zum anderen übertragen werden können, da Variablen einfach nur Bezeichner für bestimmte Bereiche im Hauptspeicher sind. Die von Variablen beschriebenen Werte kannst du aber übertragen.

Wenn du nun Daten von einem Server zu einem andere übertragen möchtest, bräuchte der Empfänger eine Schnittstelle, an den die Daten gesendet werden. Das kann in deinem Fall ein einfaches PHP-Skript sein.

Wie nun die Interaktion zwischen Sender und Empfänger ablaufen soll, hängt davon ab, welche Bedingungen für den Datentransfer erfüllt sein müssen. Insbesondere meine ich hier Bedingungen wie die Authentizität des Gegenübers zu gewährleisten, dass also Sender und Empfänger diejenigen sind, die sie vorgeben zu sein. Hier könntest du das Privater/Öffentlicher-Schlüssel-Prinzip anwenden.

Wenn das gewährleistet ist, kann du die Datenübertragung beginnen. Das einfachste ist dabei, die Daten mit einer POST-Anfrage (Push-Methode) oder als Antwort auf eine GET-Anfrage (Pull-Methode) zu übermitteln. Welche du wählst, ist eigentlich dir überlassen. In jedem Fall sollte die Anfrage aber vorher authentifiziert werden und die Kommunikation auch nur über eine verschlüsselte Leitung geschehen.
 
Zurück