Heiko Teiken: Referer auslesen

Hallo,
mein Grundlegendes Problem ist ja oben bereits beschrieben. In diesem speziellen Fall ist es so, dass die php-Datei nicht in einem Dokument oder ähnlichem eingebaut ist.
Das ganze ist so aufgebaut:
Eine php-Datei erzeugt aus einigen URL-parametern ein Bild, welches ich dann über <img src="meinedomain.de/bild.php?parameter1=x&..."> auf einer anderen Website einbinde.
Nun möchte ich gerne verhindern, dass jemand dieses Script direkt aufrufen kann und meine Seite überspringen kann, indem er sich einfach die Grafikadresse anzeigen lässt. Dafür wollte ich gerne den Referer auslesen, und wenn dieser den falchen Wert enthält, die Ausgabe verweigern.

Ich habe bis jetzt nur öfter einmal gelesen, dass ein php-Script einen Referer nicht direkt auslesen kann. Außerdem gibt es noch das Problem dass es zig verschiedene Varianten im Internet gibt, von denen allerdings bei mir keine hilft, so zb $HTPP_REFERER oder $_server['REFERER'] usw.

Für Hilfe wäre ich dankbar.

MfG

  1. Ich habe bis jetzt nur öfter einmal gelesen, dass ein php-Script einen Referer nicht direkt auslesen kann. Außerdem gibt es noch das Problem dass es zig verschiedene Varianten im Internet gibt, von denen allerdings bei mir keine hilft, so zb $HTPP_REFERER oder $_server['REFERER'] usw.

    Wie wärs denn damit: $_SERVER['HTTP_REFERER'];

    Aber eine wirkliche Lösung ist das nur für deine Frage, nicht aber für dein Problem.

    Paul

    1. Alles klar, funktioniert jetzt, vielen Dank

      1. Hi,

        Alles klar, funktioniert jetzt,

        nein, tut es nicht. Der Referer ist außer für statistische Zwecke für *nichts* zu gebrauchen - die potenzielle Fehlerquote pro Request beträgt exakt(!) einhundert Prozent. Sich auf etwas zu verlassen, dass mit dieser Wahrscheinlichkeit fehlschlägt, dürfte wohl kaum empfehlenswert erscheinen.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
      2. Mahlzeit,

        Alles klar, funktioniert jetzt, vielen Dank

        Ich behaupte: nein. Erkundige Dich (z.B. indem Du die Forumssuche bemühst), warum es eine GANZ SCHLECHTE Idee ist, auf Basis des vom Client übertragenen Referrers irgendetwas zu entscheiden - dieser ist nämlich beliebig änder- und damit fälschbar.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Hallo Heiko!

    Ich habe bis jetzt nur öfter einmal gelesen, dass ein php-Script einen Referer nicht direkt auslesen kann.

    Wenn PHP das nicht können tun sollte, dann wäre es ein Grund mehr, dass ich lieber perle ;)

    $HTPP_REFERER

    Ohne PHP zu kennen, meine ich, dass das Protokoll, durch welchen Client und Server kommunizieren, HTTP heißt - und nicht HTPP.

    oder $_server['REFERER'] usw.

    Erstens müssten es $_SERVER heißen, und dann sind Umgebungsvariablen Umgebungsvariablen. Und so viel ich weiß gibt es keine, die einfach 'REFERER' heißt. Wenn schon:

    $_SERVER['HTTP_REFERER'] (PHP)
    $ENV{'HTTP_REFERER'} (Perl, da bin ich Mensch, da bleibe ich auch).

    Für Hilfe wäre ich dankbar.

    Die größte Hilfe wäre zu erkennen, dass der Referrer (document.referrer mit osteurrrropäischem Rrrrr in derrrr Mitte) nicht immer übermittelt wird, viele Browser (Clients) erlauben, es nicht zu übermitteln oder gar zu faken.

    Viele Grüße aus Frankfurt/Main,
    Patrick

    --

    _ - jenseits vom delirium - _
    [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
    Nichts ist unmöglich? Doch!
    Heute schon gegökt?
    1. Ergänzung:

      Die größte Hilfe wäre zu erkennen, dass der Referrer (document.referrer mit osteurrrropäischem Rrrrr in derrrr Mitte)

      In JavaScript..., wohlgemerkt ;)

      Viele Grüße aus Frankfurt/Main,
      Patrick

      --

      _ - jenseits vom delirium - _
      [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
      Nichts ist unmöglich? Doch!
      Heute schon gegökt?
  3. Hello,

    wenn die Grafik-Datei exact für diesen einen Request erzeugt wird, dann könntest Du sie auch unter einem kryptischen Namen in einem spzeiellen Verzeichnis ablegen. Wenn der Name irgendwo definiert acuh das Datum der Datei enthält, kannst Du sie später durch einen Cronjob wieder aufräumen lassen.

    Das sorgt dafür, dass du im eigentlichen Script nur Dein Erzeugungsscript aufrufen und mit Parametern füttern musst, dieses erzeugt eine Datei udn einen Namen, den Du dann in Antwort auf den request einbaust. Der User hat dann auf das erzeugende Sript überhaupt keinen Zugriff mehr.

    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de