AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] Session-Management - Sicherheit
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Session-Management - Sicherheit

Ein Thema von fkerber · begonnen am 19. Jul 2009 · letzter Beitrag vom 19. Jul 2009
Antwort Antwort
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#1

Re: [PHP] Session-Management - Sicherheit

  Alt 19. Jul 2009, 20:37
Ich kann dir ja mal zeigen, wie ich es gemacht hab:

Ich habe eine inc_auth.php die den Benutzer identifiziert. Jede Daei bindet dann diese includedatei ein und ruft anschließend eine Funktion auf, die prüft ob der User die Seite sehen darf.

Das sieht dann so aus:
Code:
<?php
include ('includes/inc_func.php');
include ('includes/inc_auth.php');

auth_check (2);

print_header (7);

$shownewblog = FALSE;
$showerrors = FALSE;

echo '<h1>Admin</h1>';
Zuerst werden die Dateien eingebunden. (inc_func.php enthält diverse Funktionen)

Dann wird die Funktion auth-check() aufgerufen, die überprüft, ob der Benutzer berechtigt ist, die Seite zu sehen. Die Zahl 2 steht hier für die Benutzergruppe "Admins"

Hier ist die inc_auth.php:
Code:
<?php
session_start ();

include ('inc_mysql.php');

if (empty ($_SESSION['username']))
{
   $_SESSION['username'] = 'guest';
   $_SESSION['pwd_hash'] = sha1('');
}

$res = mysqlquery ('select user.id,rights+0,path from user,templates where username="' . $_SESSION['username'] . '" and password="' . $_SESSION['pwd_hash'] . '" and user.template=templates.id');

if (mysql_num_rows ($res) == 1)
{
   $_SESSION['userid'] = mysql_result ($res, 0, 0);
   $_SESSION['rights'] = (int)mysql_result ($res, 0, 1);
   $_SESSION['tplpath'] = mysql_result ($res, 0, 2);
}
else
{
   $_SESSION['userid'] = 1;
   $_SESSION['username'] = 'guest';
   $_SESSION['pwd_hash'] = sha1('');
   $_SESSION['rights'] = 0;
   $_SESSION['tplpath'] = 'templates/default/';
}
?>
Wie man sieht wird - falls kein User eingeloggt ist - ein Gastbenutzer benutzt. Dieser sollte auch in der Datenbank vorhanden sein. Die Spalte "rights" in der Tabelle gibt an, welche Rechte der Benutzer hat - in diesem Fall isses eine 0 für Gäste, eine 1 für registrierte Benutzer und eine 2 für Admins.

Hier die Funktion auth_check()
Code:
function auth_check ($level)
{
   if ($_SESSION['rights'] < $level)
   {
     print_header ($_GET['site']);
     echo '
Sie haben nicht die ben&ouml;tigten Rechte f&uuml;r diesen Bereich, bitte loggen Sie sich ein!';
      parse_tpl ('logon', array ('target' => 'index.php', 'redirect' => $_SERVER['PHP_SELF']));
      print_footer ();
      exit;
   }
}
Falls der user nicht die Berechtigung hat, auf die Seite zuzugreifen, gibt sie eine Fehlermeldung aus und zeigt die Login-Seite (wird aus einem Template geparst).
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 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