Sicherheitsfrage

Guten Morgen allerseits,

Ich binde in meine Homepage Content dynamisch per GET-Parameter ein (include), so etwa in der Form „index.php?seite=home“. Nun hab ich aber das Problem, dass man ja theoretisch andere Subseiten als die index.php per manueller Eingabe aufrufen kann, etwa login.php, und damit ggf. Zugriff auf nur Usern oder Administratoren vorbehaltenen Seiten hat. Ich muss vllt. erklaerend dazusagen, dass ich die restriktiven Bedingungen nicht in jedem zu includierenden Dokument einzeln angegeben habe, sondern in einem Loginheader, der bei jeder restriktierten Seite eingebunden wird.

Meine Frage nun also: Kann ich diesen manuellen Zugriff auf, sagen wir, login.php (oder jegliche andere Dateien auf meinem Server) so einschraenken, dass sie nur noch ueber die index.php aufgerufen werden kann?

Vielen Dank im Vorraus,
Burkhard

Hallo,

setz das mal an den Start aller deiner Seiten

<?php if (strpos($_SERVER[REQUEST_URI],"index.php") == 0)
{ die("Sie dürfen das nicht"); } ?\> Immer wenn jetzt eine Seite index.php?seite=xxx aufgerufen wird, checkt diese Seite ob sie über die index.php aufgerufen wurde - ansonsten kommt die Meldung, dass man nicht darf... Gruß Marco > [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

setz das mal an den Start aller deiner Seiten

<?php :if (strpos($_SERVER[REQUEST_URI],"index.php") == 0)
{ die("Sie dürfen das nicht"); } ?\> Immer wenn jetzt eine Seite index.php?seite=xxx aufgerufen wird, checkt diese Seite ob sie über die index.php aufgerufen wurde - ansonsten kommt die Meldung, dass man nicht darf...

Das wird nicht funktionieren. Kommst Du darauf, warum? :wink:

Grüße

CMБ

Klär mich auf…
Wenn ich die Page per include(xxx); lade, dann müsste das schon tun…
Oder?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

liefert $REQUEST_URI nicht noch einen / vorne mitdran?

however…
Einfach eine Variable in der index.php setzen (am Anfang!) und in allen anderen Scripten prüfen
if ($variable != „geheimespasswort“) die(„Direktaufruf der Unterseiten nicht gestattet“);

wenn man will kann man ja auch noch absichern, dass es nicht per $_GET oder $_POST übermittelt werden kann - also für den Fall, dass die register globals an sind…

Ok, die Methode ist fast schon zu einfach ^^ Aber manchmal uebersieht man eben die augenscheinlichsten Sachen :wink:

Was sollte es dem Schaedling bringen, den Inhalt der Variable per GET oder POST zu uebermitteln? Ich lese doch direkt aus der Variable und nicht aus einem der beiden Arrays?!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

liefert $REQUEST_URI nicht noch einen / vorne mitdran?

Ja macht es und damit wäre strpos auf index.php = 1 und somit > 0

Was sollte es dem Schaedling bringen, den Inhalt der Variable
per GET oder POST zu uebermitteln? Ich lese doch direkt aus
der Variable und nicht aus einem der beiden Arrays?!

tja… bei register globals auf on würde ein
echo $variable;
auch eine übergebene GET bzw POST Variable ausgeben und damit wäre das „passwort“ knackbar :wink:

Ok, register globals habe ich standardmaessig eh aus. Danke fuer die Loesung!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]