Hi,
Ich möchte den Zugriff auf .zip files in einem Verzeichnis nur dann erlauben, wenn die Dateien per Link von meiner site aufgerufen werden.
es gibt keine Methode, das so einzuschränken. Jedenfalls keine sichere.
<Files *.zip>
Order deny,allow
Deny from all
Allow from xxx
</Files>
In diesem Ansatz hast du einen schwerwiegenden gedanklichen Fehler: Es ist ja nicht dein Server, der die Ressource abruft, sondern der Client des Besuchers. Konkret: Wenn ich deine Website aufrufe und dann auf deiner Seite einen Link auf so ein zip-Archiv anklicke, dann sendet ja *mein PC* einen Request an deinen Server. Dein Server kann dann nicht mehr erkennen, ob ich vorher eine Seite deiner Web-Präsenz abgerufen habe oder die URL des zip-Archivs direkt eingegeben habe.
Mit der IP scheint dies auch zu klappen.
Das täuscht. Es sei denn, Client (Browser) und Server laufen auf derselben Maschine. Hostest du die Website etwa auf deinem eigenen PC zuhause am DSL-Anschluss?
Leider löst dies mein Problem nicht, da die IP meiner site dynamisch vergeben wird.
Das bestärkt mich jedenfalls in dieser Vermutung.
Kann mir bitte jemand sagen, was ich falsch mache, oder noch besser, wie ich das richtig mache.
Oder ist mein Ansatz grundsätzlich ungeeignet?
Ja, leider.
Du hast nur eine Chance, "berechtigte" Zugriffe nach deiner Definition zu erkennen, und das ist der HTTP-Referer. Das Dumme ist nur, dass diese Angabe alles andere als zuverlässig ist: Die HTTP-Spezifikation schreibt nicht vor, dass überhaupt ein Referer gesendet werden muss, in einigen Browsern kann man ihn abstellen, manche Firewalls, Proxies und Privacy-Tools filtern ihn aus oder schreiben irgendeinen Blödsinn rein.
Meiner Ansicht nach hast du nur die Möglichkeit, entweder diese Deeplinks zu akzeptieren, oder mit einem Session-Management sicherzustellen, dass nur derjenige die zip-Archive herunterladen darf, wer zuvor deine Seite abgerufen hat.
So long,
Martin
"Drogen machen gleichgültig."
- "Na und? Mir doch egal."