phpbar.de logo

Mailinglisten-Archive

[php] =?iso-8859-1?Q?AW:_=5Bphp=5D_Skriptausf=FChrung_von_fremder_Site_verhinde?= =?iso-8859-1?Q?rn?= =?iso-8859-1?Q?rn?=

[php] =?iso-8859-1?Q?AW:_=5Bphp=5D_Skriptausf=FChrung_von_fremder_Site_verhinde?= =?iso-8859-1?Q?rn?= =?iso-8859-1?Q?rn?=

Gerald Grote g.grote_(at)_tu-bs.de
Tue, 23 May 2000 15:32:23 +0200


> Hallo!
>
> > www.foobar.de/download.php3?id=3
> >
> > Das download Skript soll von foobar.de ausgeführt werden können,
> > wenn die Datei download.php3 von einem fremden Server oder
> > direkt im Browser eingetippt wird, soll es nicht gehen oder auf
> > die index.html verweisen.
> >
> > Ist soetwas überhaupt mit PHP machbar?
> >
>
> Klar! Wenn der HTTP_REFERRER (HTTP Umgebungsvariable, die angibt,
> von wo aus
> der Surfer geklickt hast) nicht www.foobar.com ist, mach ein
> Redirect auf die
> index.html! (siehe Funktion header() )

Bei Opera kann man die Übergabe des REFERER beim HTTP-Request abschalten (in
Zukunft vieleicht auch bei anderen Browsern wie Netscape 6/ Mozilla).

Du kannst dich also wieder mal nicht darauf verlassen, bei einem Klick von
deiner Seite auf den Download-Link auch den entsprechenden Referer zu
erhalten.

Eine andere Lösung wäre es vieleicht, den Download als Action eines Forms
mit einem einfachen Submit-button zu starten und dabei ein HIDDEN-Value zu
übergeben, den du vorher selbst erzeugt hast.

Nochmal zum besseren Verständnis:
1. Beim 1.Abruf der Seite (es gibt keinen Key) erzeugst du einen zufälligen
Key und setzt ihn als HIDDEN-Value in das Formular mit dem Downloadbutton
(kann ja z.B. auch ein Image sein). Den Key musst du dir natürlich merken.

2. Wenn der Nutzer auf den Button klickt, wird der Key übergeben und die
vergleichst ihn mit den Gespeicherten. Wenn der Key von dir stammt, gibst du
das File raus, ansonsten einfach normal erste Seite mit dem Downloadbutton.

3. Sollte ein Key einige Minuten nicht benutzt werden, verwirfst du ihn
einfach. Der Nutzer muss dann notfalls einfach die 1. Seite nochmal laden.
Im Normalfall bekommt er von dem versteckten Key garnichts mit.

Ein externer Link auf diese Seite würde also zunächst erstmal deine Seite
ausspucken. Eine fremde Seite könnte natürlich den Key jedesmal aus deiner
Downloadseite holen und in die eigene Seite integrieren, aber das wäre wohl
etwas aufwendig für den "Dieb")

Gerald.



php::bar PHP Wiki   -   Listenarchive