Hallo,
also ich erstelle gerade eine Homepage, und möchte sicherstellen, dass auf die einzelnen Seiten nicht direkt zugegriffen werden kann. (Damit meine ich das nicht einfach der Pfad/dateiname.htm in den Browser eingegeben werden kann, sondern nur über eine andere Seite verlinkt werden kann.)
das ist nicht möglich. Entweder eine Ressource ist per HTTP zugänglich, oder sie ist es nicht.
Meine Idee wäre es _alle_ IP-Adressen zu sperren, mit Ausnahme von 127.0.0.1 (Localhost). Was meint ihr dazu?
Dann könnte nur noch derjenige die Seiten abrufen, der direkt am Server sitzt - vorausgesetzt, da läuft ein Browser.
Akzeptiere die Tatsache, dass HTTP ein zustandsloses Protokoll ist. Für jeden Seitenaufruf gibt es nur einen Request (Anforderung) vom Browser des Besuchers, und eine Response (Antwort) vom Server.
Was den Request ausgelöst hat, kannst du serverseitig nicht feststellen[1]. Möglich, dass der Besucher einen Link auf deiner Seite geklickt hat; ebenso möglich, dass er die Adresse direkt eingegeben hat; möglich sogar, dass er das Dokument einfach mit wget herunterlädt. All das ist für dich nicht mit Sicherheit unterscheidbar.
Vor allem bist du anscheinend dem Denkfehler aufgesessen, der Request käme "von deinem Server", wenn der Besucher einem Link folgt. Das ist nicht so. Er kommt, wie in allen anderen Fällen auch, vom Client. Eine Überprüfung auf IP 127.0.0.0/8 (localhost) ist damit völlig sinnlos.
So long,
Martin
[1] Eine Abfrage des HTTP-Referers ist zwar möglich, aber oft nicht zielführend. Manche Browser sind so eingestellt, dass sie gar keinen Referer senden, andere so, dass sie einfach das Root-Dokument / der aktuellen Domain angeben, wieder andere senden irgendeinen Blödsinn.
Computer lösen für uns Probleme, die wir ohne sie gar nicht hätten.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(