Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Session-Management - Sicherheit (https://www.delphipraxis.net/137372-%5Bphp%5D-session-management-sicherheit.html)

fkerber 19. Jul 2009 18:52


[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:
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 */
}
Da das in allen Dateien drinsteht, sind Änderungen mehr als lästig...

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:
check();
/* EIGENTLICHER INHALT */
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.

Grüße, Frederic

omata 19. Jul 2009 19:07

Re: [PHP] Session-Management - Sicherheit
 
Du kannst die weitere Verarbeitung durch PHP mit exit bzw. die beenden.

Somit kann deine Funktion so aussehen...
Code:
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;
  } 
}
Aber mal was grundlegendes: PHP- und HTML-Code zu vermischen ist nicht gerade schön.

fkerber 19. Jul 2009 19:15

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:

Zitat von omata
Aber mal was grundlegendes: PHP- und HTML-Code zu vermischen ist nicht gerade schön.

Wie würdest du / würde man es denn hier anders lösen?


Grüße, Frederic

himitsu 19. Jul 2009 19:26

Re: [PHP] Session-Management - Sicherheit
 
ein kleines Templatesystem, die HTML-Seiten per include reinladen, oder einen redirect zur HTML-Fehler-Seite.

fkerber 19. Jul 2009 19:30

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

DeddyH 19. Jul 2009 19:41

Re: [PHP] Session-Management - Sicherheit
 
Der Header ist doch erst "weg", wenn die erste Ausgabe erfolgt ist.

fkerber 19. Jul 2009 19:47

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

DeddyH 19. Jul 2009 19:52

Re: [PHP] Session-Management - Sicherheit
 
Aber doch nicht, wenn Du gleich als erstes die Prüfung vornimmst.

fkerber 19. Jul 2009 20:04

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

DeddyH 19. Jul 2009 20:07

Re: [PHP] Session-Management - Sicherheit
 
Achso, die Reihenfolge lässt sich nicht ändern?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr.
Seite 1 von 2  1 2      

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