![]() |
[PHP] Session-Management - Sicherheit
Hi!
Es geht darum, sicherzustellen, dass keiner unrechtmäßiger Weise sich Zugriff auf Funktionen besorgen kann, die er nicht erreichen soll. (Die Sachen sind nur im geschützten LogIn-Bereich verfügbar). Bislang sieht es so aus (das funktioniert auch - erscheint mir aber u.U. zu umständlich): Es gibt eine zentrale index.php - in der steht ein "<? session_start(); ?>" am Anfang drin und bei erfolgreichem LogIn wird in $_SESSION passendes eingetragen. Alle Inhaltsdateien werden nur in diese index included - auf ein Aufruf der Datei test.php erfolgt über ?site=test Um jetzt die Datei test.php vor bösen Menschen zu schützen sieht sie so aus;
Code:
Da das in allen Dateien drinsteht, sind Änderungen mehr als lästig...
if (!(isset($_SESSION['userID'])))
{ echo "<meta http-equiv='refresh' content='1; URL=./'>"; echo "Login erforderlich</div> "; echo "Sollten Sie nicht weitergeleitet werden, klicken Sie [url='./']hier[/url]!"; } else { /* EIGENTLICHER INHALT */ } Jetzt kam die Idee auf, man könne das ja vllt. alles in einen Funktionsaufruf auslagern. Wunschvorstellung wäre, das die test.php dann nur noch so aussieht:
Code:
Die Frage wäre jetzt, schafft man es, eine solche Funktion check() zu schreiben die in 100% (also wirklich 100%) aller denkbaren Fälle sicherstellt, dass niemand den eigentlichen Inhalt zu sehen bekommt, der ihn nicht sehen sollte. Durch den Verlust der if-else-Struktur würde ich u.U. befürchten, dass jemand den Reload abbrechen könnte oder ähnliches.
check();
/* EIGENTLICHER INHALT */ Grüße, Frederic |
Re: [PHP] Session-Management - Sicherheit
Du kannst die weitere Verarbeitung durch PHP mit exit bzw. die beenden.
Somit kann deine Funktion so aussehen...
Code:
Aber mal was grundlegendes: PHP- und HTML-Code zu vermischen ist nicht gerade schön.
function check() {
if (!(isset($_SESSION['userID']))) { echo "<meta http-equiv='refresh' content='1; URL=./'>"; echo "<div>Login erforderlich</div> "; echo "Sollten Sie nicht weitergeleitet werden, klicken Sie [url='./']hier[/url]!"; exit; } } |
Re: [PHP] Session-Management - Sicherheit
Hi!
Und das stellt dann sicher, dass der redirect durchgeführt wird, aber die Seite nicht weiter angezeigt wird? Zitat:
Grüße, Frederic |
Re: [PHP] Session-Management - Sicherheit
ein kleines Templatesystem, die HTML-Seiten per include reinladen, oder einen redirect zur HTML-Fehler-Seite.
|
Re: [PHP] Session-Management - Sicherheit
Hi!
Naja, ein redirect wird direkt ja nicht gehen, da der Header schon weg ist und lohnt sich für den Dreizeiler jetzt wirklich ein Include einer HTML-Datei? Was ist an der aktuellen Machart schlecht? Grüße, Frederic |
Re: [PHP] Session-Management - Sicherheit
Der Header ist doch erst "weg", wenn die erste Ausgabe erfolgt ist.
|
Re: [PHP] Session-Management - Sicherheit
Ja, aber die Datei ist ja in der index.php inkludiert.
Und da ist ja schon oben ein Banner z.B. raus oder das Menü o.ä. Grüße, Frederic |
Re: [PHP] Session-Management - Sicherheit
Aber doch nicht, wenn Du gleich als erstes die Prüfung vornimmst.
|
Re: [PHP] Session-Management - Sicherheit
Wie meinst du das?
Der Aufbau ist: index.php --> darin inkludiert z.B. header.php und eben dann auch $_GET["site"].php inkludiert - und da ist diese Prüfung dann drin. Grüße, Frederic |
Re: [PHP] Session-Management - Sicherheit
Achso, die Reihenfolge lässt sich nicht ändern?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz