Sebastian: Alternativen zu $_SERVER['http_referer']

Hallo zusammen,

folgendes Problem:
Eine bestimmte Seite soll mit einem Login versehen werden. Das an sich ist jedoch noch nicht das Problem. Vielmehr sollen annähernd alle User dieses Passwort eingeben müssen, es sei denn, sie kommen per Link von einer ganz bestimmten Seite.

Ich habe mich daher für $_SERVER['http_referer'] entschieden und lasse das Login nur anzeigen, wenn man nicht von dieser bestimmten Seite kommt. Nun habe ich aber in der php-Doku gelesen, dass nicht alle Browser diese Angabe mitschicken.

a) Wird es standardmäßig mitgesandt und man kann es nur als "Kenner" ausschalten?
b) Welche Alternativen gibt es zu meiner Herangehensweise?

Vielen Dank für eine Antwort und einen schönen Abend noch,
Sebastian

  1. Vielmehr sollen annähernd alle User dieses Passwort eingeben müssen, es sei denn, sie kommen per Link von einer ganz bestimmten Seite.

    Gehört die "ganz bestimmten Seite" auch zu dem von dir editierbaren Bereich? Ist diese "ganz bestimmten Seite" auch erst nach Login verfügbar oder frei erreichbar?

    Möglicherweise würde es dir ansonsten helfen beim Link in der "ganz bestimmten Seite" einfach einen hidden input mitzusenden, auf den du dann serverseitig prüfst - z.B. <a href="ziel.htm?meinspezialflag">ziel</a>

    Greets,
    Richard

  2. Hallo,

    Ich habe mich daher für $_SERVER['http_referer'] entschieden und lasse das Login nur anzeigen, wenn man nicht von dieser bestimmten Seite kommt. Nun habe ich aber in der php-Doku gelesen, dass nicht alle Browser diese Angabe mitschicken.

    Der Referrer ist eine freiwillige Angabe und zudem noch problemlos fälschbar. Es ist Unnsinn eine Webseite nur durch einen Referrer zu schützen.

    Baue einen (HTTP-)Passwortschutz ein, arbeite mit Sessions oder setze ein spezielles Cookie.

    Jonathan

    --
    Selfcode: ie:( fl:{ br:> va:) ls:& fo:) rl:? ss:} de:> js:| ch:? mo:} zu:)
  3. Hallo,

    $_SERVER['http_referer']
    a) Wird es standardmäßig mitgesandt und man kann es nur als "Kenner" ausschalten?

    soweit es nur die Browser betrifft: Ja, Ja.
    Allerdings gibt es eine Menge anderer Stolperfallen. Software-Firewalls, Proxies und sogenannte Privacy-Tools sind nämlich auch typische Kandidaten, die den Referrer gern herausfiltern.

    b) Welche Alternativen gibt es zu meiner Herangehensweise?

    Wenn du die eine Seite ebenfalls unter Kontrolle hast, von der aus die Besucher ohne Login ankommen dürfen, dann gibt es viele Möglichkeiten. Gestalte die Links so, dass sie einen bestimmten URL-Parameter mitgeben, oder dass sie eine etwas andere URL anspringen. Ist natürlich alles relativ unsicher, weil leicht imitierbar und damit fälschbar.
    Liegen die beiden Seiten auf demselben Server, wäre über Sessions etwas zu machen.

    Letztendlich frage ich mich bei solchen Lösungen aber immer wieder, warum sich der Betreiber von Seite X dafür interessiert, ob ich vorher zufällig die Seite Y gesehen habe. Ich sehe in einer solchen Korrelation keinen Sinn, zumal sie eben nicht zuverlässig ist.

    So long,
     Martin

    --
    Rizinus hat sich angeblich als sehr gutes Mittel gegen Husten bewährt.