Formular Daten nur von eigener Domain annehmen

versuch13

Erfahrenes Mitglied
Hi, kann man irgendwie erreichen dass Formulardaten die an ein PHP Script übergeben werden, nur dann mit dem Script ausgewertet werden wenn sie auch von einen Formular
auf dem gleichen Server abgeschickt werden?

Zudem, wenn ich eine kleine Ajax Anwendung habe, per Javascript werden also Daten an
ein PHP Script übergeben die z.B. auch aus einem Formular stammen. Wie könnte man verhindern dass dieses PHP Script Daten annimmt die nicht per Ajax gesendet werden
sondern ebenfalls aus einen Formular stammen welches nicht auf dem gleichen Server bzw. unter der gleichen Domain erreichbar ist?

Ist das so überhaupt möglich?

Kleines Beispiel. Eine Buddy Liste, wenn ein User eingeloggt ist kann er einen anderen
User zu seiner Buddyliste hinzufügen, und zwar werden per Ajax die beiden UserIds an
ein PHP Script übergeben welche die Buddyliste füllt. In dem Javascript könnte man dann
ja nachsehen an welches PHP Script die Daten übergeben werden und per Formular
an dieses dann Daten übergeben. Schaden anrichten könnte man so ja nicht, aber
trotzdem wäre es unschön wenn man die Buddyliste manipulieren kann.

Sehe ich soweit doch alles richtig oder? Gibt es Lösungen das und ähnliches zu verhindern? Vielen Dank,
 
Hi,

spontan würden mir zwei Varianten einfallen:
  • Überprüfung des http-Referrers (der allerdings nicht von allen Clients mitgesendet wird, aber Du könntest zumindest fremde ausschließen --> oft verwendet für "Bilderklau"-Grafiken)

  • Über die Session (wobei ich nicht weiß, ob bei AJAX-Anfragen Session-Cookies mitgesendet werden). Schreibe die Session-ID ansonsten in den JS-Quelltext und sende sie bei Deiner Anfrage mit.

Gruß
.
 
He, danke für die schnelle Antwort.

Genau das waren auch meine Gedanken. Nur wie du sagst wird der HTTP Referrer nicht von jedem Client gesendet. Aber was ist gemeint mit "andere auschließen"? Alle Anfragen
die von einer anderen Domain kommen einfach ausschließen?

Zum zweiten. Genau, ich dachte natürlich auch als erstes an eine Lösung mit Sessions,
aber diese ist in dem PHP Script welchem per Ajax die Daten übergeben wird ja nicht
vorhanden? Und das könnte ich jetzt dadurch lösen das ich die Session ID mit übergebe?
Da hängt das Problem. Wenn in dem Script die Session verfügbar gemacht werden könnte
wäre das natürlich die beste Lösung.

Gruß
 
Hi,

#Referer: Lasse alles zu, was von Deiner Seite oder ohne Referrer kommt. Fremde Domains würde ich blocken.

#Session: Müsste soweit ich mich entsinne etwa so aussehen:
Code:
script.php?PHPSESSID=cd45a3f76f7325099c755b25b
Schreibe die ID in den JS-Quelltext (in Form einer Variable) und hänge sie entsprechend an Deine Anfrage an. Du musst die Lebenszeit natürlich so einstellen bzw. überwachen, dass der Klau der Session sinnlos ist. ;)

Gruß
.
 
Zurück