Quereinstieg verhindern

Hi!

Wie kann ich mit PHP eine Quereinstieg auf Webseiten verhindern?

Beispiel:
Der Einstieg in die Webseiten erfolgt über Seite A. Dort gibt es ein Menü, von dem aus man nach B, C, D und E weiterverzweigen kann. Jeder dieser Seiten hat wiederum Unterseiten: B1, B2, B3, C1, C2, C3 usw.

Nun möchte ich verhindern, dass jemand direkt die Seite B1 aufruft.

Bislang habe ich das mittels einer Session-ID gemacht. Beim Aufruf von Seite A wird eine Session-ID generiert, in einer Datenbanktabelle vermerkt (Session-ID, Seitenkennung der Seite A sowie Datum und Uhrzeit) und durch die Seiten weitergereicht.

Jede Seite nimmt diese Session-ID entgegen (mittels POST) und prüft dann, ob es einen entsprechenden Eintrag in der Datenbank gibt (Select auf die Session-ID und die Seite A). Gibt es einen, wird die aufgerufene Seite angezeigt (es wird erneut die Session-ID, die Kennung der aufgerufenen Seite sowie Datum und Uhrzeit in der Datenbank gespeichert). Gibt es keinen Eintrag (die Antwortmenge ist leer), erfolgt der Sprung zur Seite A mittels

header(„location:a.php“);

Eigentlich hatte ich gehofft, damit Quereinsteiger zu verhindern und auf die Startseite umzuleiten. Bei einer Analyse der Daten habe ich nun aber festgestellt, dass dort Direktaufrufe von untergeordneten Webseiten (B1, B2, …) mit einmalig erscheinenden Session-IDs existieren.

Frage 1: Wie kann das sein?

Frage 2: Wie bekomme ich die Webseite so dicht, dass es keinen Quereinstieg mehr gibt?

Grüße
Heinrich

moin…

klingt ein wenig komisch Dein Problem weil es eigentlich funktionieren sollte…
Also wäre natürlich ein codebug möglich, aber das kann man so ohne code ja nicht sehen…

Ich bin mir nicht sicher, aber ich glaube, dass man mit manchen Browsern die redirects der Seiten deaktivieren kann.
Bleibt ja schliesslich jedem Browser überlassen, die Header richtig zu interprätieren und zu befolgen…

am sichersten wäre es wohl, wenn Du die Seite so in die Seite A einflechtest, dass sie garnicht separat abgerufen werden kann…
Sprich: Du rufst für Seite A und A1 immer die gleiche Datei auf.
Wenn eine Session_id neu generiert wurde, wird Seite A angezeigt - selbst wenn übergebungsparameter für Seite A1 vorhanden sind - andernfalls wird großzügigerweise Seite A1 angezeigt… :wink:
Auf jeden Fall solltest Du nach dem location-header das script töten „die(); // script.php, die()!“

HTH
Munich