URL von Seite, wo meine Seite eingebettet ist?

...komplette Frage anzeigen

5 Antworten

Der Refer - wie in den anderen Antworten beschrieben - wird zuuuuu viele False-Positives liefern, aber du könntest dir ein kleines JavaScript basteln, welches ein PHP-Skript triggert:

<script>
if (window != top) {
(new Image()).src = "http://host.tld/hotlink.php?top=" + top.location.href;
}
</script>

Das ruft das PHP-Skript "hotlink.php" mit der URL des Einbettenden Fensters auf, die du Serverseitig per $_GET['top'] auslesen kannst. Wird deine Seite hingegen nirgendwo eingebettet, wird auch kein Request an "hotlink.php" gesendet.

Alternativ kannst du anstatt "top" auch "parent" nehmen, falls du eine Seite erkennen willst, die deine Seite einbettet, ihrerseits aber ebenfalls in eine weitere Seite eingebettet ist. :)

Auf zusätzliche Sicherheitsrisiken mache ich jetzt nicht aufmerksam, da ich davon ausgehe, dass du die im PHP-Teil beachten wirst.

Nochmal zum weiterlesen:

https://de.wikipedia.org/wiki/Hotlinking

Viel Spaß damit. ;)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von TeeTier
16.02.2016, 22:53

PS: Im Idealfall liefert das PHP-Skript einfach ein 1x1 Pixel GIF zurück. Das wären dann 28 Byte. Du kannst aber auch einfach GAR nichts weiter ausgeben, denn das fehlerhafte Bild wird ja sowieso nicht benutzt.

Alternativ könntest du einen fetten XMLHttpRequest absetzen, oder eine noch bloatigere JQuery-artige Bibliothek einsetzen, aber falls du die nicht sowieso schon eingebunden hast, ist die Methode mit dem Image-Objekt am einfachsten. :)

0
Kommentar von TeeTier
16.02.2016, 22:57

PPS: Escaping nicht vergessen! Habe ich in meinem Beispiel jetzt weggelassen, ist aber enorm wichtig!

Siehe dazu escape(), encodeURI() oder encodeURIComponent()!

0
Kommentar von TeeTier
16.02.2016, 22:57

PPPS: Das zweite Wort soll "Referer" heißen. Typo. ><

0

Zu welchem Zweck willst du diese Datenerhebung machen? Du kannst den einfachen zugriff sperren und die Seiten, die deine Seite einbinden wollen, Authentifikationsdaten im Header mitzusenden.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von BPTVEu
16.02.2016, 13:34

Nein ich will das einbetten nicht sperren D:

Ich will wissen, wer es eingebettet hat, weil ich das von bestimmten Seiten ja erlaube, und sogar will.

0
$_SERVER["HTTP_REFERER"]
sollte eigentlich das richtige sein
ansonsten mach doch mal

var_dump($_SERVER);
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von BPTVEu
16.02.2016, 18:39

Danke! Funktioniert!

0

ODER, wenn möglich, Du hängst an die URL zum einbetten eine  Parameter

?from=1

und alle, die die Seite einbinden bekommen ihre eigen nummer.

In deinem Script hast Du dann die Variable

$_GET['from']

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?