Thomas Luethi: Erkennen, wer PHP-Seite mit iframe eingebunden hat

Beitrag lesen

Hallo,

Ich möchte eine meiner Seiten anderen Websites kostenlos zum Einbinden zur Verfügung stellen, z.B. mittels dem HTML-Tag iframe (Beispiel: <iframe src="http://www.nak-badragaz.ch/xy.php" frameborder="0" width="95%" height="1000" scrolling="no"></iframe>).

Den Referrer kriegst Du in PHP mit der Variablen
$_SERVER["HTTP_REFERER"]

Ich weiss von Grafiken her, dass der Browser, wenn er vom
Server eine Grafik verlangt, sagt: "Ich komme von der und
der Seite (Referrer), bitte schick mir die Grafik xyz.jpg".
Ich vermute, dass das bei IFRAME auch so ist, dass also
die URL der "aeusseren" (einbettenden) Seite im Referrer
steht beim Abruf der mit IFRAME eingebundenen Seite.

Guck einfach mal ins Logfile Deines Webservers.
Oder bau irgendwo im PHP folgende Zeilen ein,
welche den Referrer in einen HTML-Kommentar schreiben:

$herkunft=htmlspecialchars($_SERVER["HTTP_REFERER"]);
echo "<!-- Referrer: [$herkunft] -->\n";

Der Referrer wird von manchen Browsern nicht mitgeliefert,
oder er wird unterwegs irgendwo zwischen dem Browser und
dem Webserver rausgefiltert oder sogar gefaelscht, z.B.
durch WebWasher, Firewalls, Proxies...

Er ist also keine zuverlaessige Basis fuer Entscheidungen.

Damit meine Seite nicht in x-beliebige Websites eingebunden werden kann, möchte ich überprüfen, von wo (welchem Account) aus sie aufgerufen wird [...]

Du kannst Dich nicht richtig schuetzen.
Was im Quelltext einer Seite steht, kann irgendwer abschreiben.
Auch mit IDs u.s.w. kannst Du nie sicher sein, dass die
Datei effektiv dort eingebunden wurde, wo Du moechtest.

Ein Ansatz waere:

Die Anzeige ist grundsaetzlich "verboten".
Wenn der Referrer leer ist, oder wenn er in einem
von Dir definierten Set von URLs enthalten ist,
dann ist der Zugriff "erlaubt".

Gruesse,

Thomas