Camping_RIDER: Formular kapern

Beitrag lesen

Aloha ;)

Ich würde an deiner Stelle dann mal Möglichkeit 2 ausprobieren - ein PHP-Skript auf (b), dessen Inhalt sowas ist wie

<?php echo file_get_contents("http://domain.org/form.php"); ?>

(vielleicht etwas weniger minimalistisch, aber für einen ersten Test sollte das reichen)

Ich hab's eben erfolgreich gestestet und so wird jetzt unter (b) der selbe Content ausgegeben, wie unter (a).

Schön zu sehen, dass meine Idee funktioniert. So weit, so gut.

Nachdem die "minimalistische" Version funktionierte, habe ich als erstes dafür gesorgt, dass das Formular nicht an (a) sondern an (b) abgeschickt wird und versucht, dort die Daten aus POST serverseitig an (a) zu schicken. (a) liefert auch etwas zurück aber nicht die Bestätigungsseite. D.h. die Daten werden nicht verarbeitet bzw. nicht für valide erklärt. Aber zu klären warum, erscheint mir sehr knifflig.

Das ist mir nicht klar. Warum versuchst du, das Formular beim Senden über deinen Server zu schicken? Das Abrufen des Formulars via JavaScript wird zwar durch die SOP verhindert, die SOP greift aber nur spezifisch bei Skriptzugriffen aller Art. Das Senden eines Formulars wird dadurch nicht beeinträchtigt. Es gibt also keinen Grund, beim Senden über den Server zu gehen - du kannst ganz einfach das Formular so nehmen wie es ist und entsprechend an die ursprüngliche Adresse senden lassen.

Sollte das nicht funktionieren, d.h. sollten die Daten auf diese Art nicht vom Server unter (a) akzeptiert werden, dann deshalb, weil der Server unter (a) noch zusätzliche Schutzmechanismen implementiert hat, z.B. um sich gegen CSRF zu schützen, beispielsweise durch Prüfung des Referrer oder ähnliches.

In diesem Fall bist du machtlos, da kann dir auch dein Server nicht helfen - wenn der Server unter (a) alle Daten ablehnt, die nicht von einer Seite aus dem Angebot von (a) kommt, dann lehnt er sowohl die Daten ab, die ein Client von einer Seite aus dem Angebot von (b) abschickt, als auch die Daten, die der Server (b) abschickt.

Bisher ging es darum, die Same Origin Policy von Javascript zu umgehen - soweit so gut. Das ist kein großes Problem, sondern lediglich eine bewusste Einschränkung einer Technologie, die man umgehen kann. Wenn nun aber Sicherheitsmechanismen greifen, die von (a) extra eingesetzt werden, um so etwas, wie du es vorhast, zu verhindern, tätest du gut daran, die Sache ruhen zu lassen - die Betreiber von (a) wissen schon, warum sie einen solchen Sicherheitsmechanismus einsetzen, und das aktive Umgehen eines solchen Sicherheitsmechanismus ist nicht Sinn der Sache.

Wenn dein Anliegen gerechtfertigt ist haben die Betreiber von (a) sicher Verständnis und öffnen dir ein Türchen in ihrem Sicherheitsmechanismus - oder erklären dir, warum sie das nicht wollen. Wenn dein Anlegen nicht legitim ist, müssen wir nicht mehr weiter darüber diskutieren.

Grüße,

RIDER

--
Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
# Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[