ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
497
497
EMPFEHLEN
-
07.10.07 02:19 #1
- Registriert seit
- Jul 2007
- Ort
- Quakenbrück
- Beiträge
- 756
Guten Morgen liebe Leute...
Ich hab meine Web-Site fast fertig und möchte nun zum Abschluß noch die Seiten entsprechend meinem Rechtssystem sichern...
Am liebsten würde ich das machen indem ich für jedes Recht ne File erstelle, womit ich die Rechte überprüfe und ggf den Zugriff auf die Seite verweigere...
Die Seiten werden je nach Recht im Navi gezeigt/nicht gezeigt... Aber man könnte sie dennoch ohne entsprechendes Recht betreten, was ich ja verhindern will...
Ich möchte aber auch nicht um jede Seite einzeln nen if...else-Baum legen...
Ich brauch daher mal nen Gedankenanstoß, wie ich das realisieren könnte...Schnellste Hilfe -> www.gidf.dePHP-Code:($hilfe=='hilfreich') ? bewerten(positiv) : ignore_post();
Wer aus meiner Gegend kommt, kann sich gern mal melden, kenn hier keenen ;)
-
Wichtig ist dass kein Zugriff erfolgen kann, ob nun ueber einen Link oder einen direkten Aufruf.
Dafuer ist es wichtig im Script selbst die Rechte zu ueberpruefen, und nicht nur bei der Erstellung des Menues anhand der Rechte entscheiden ob der Link angezeigt werden soll oder nicht.
Du kannst besser alle Links anzeigen und dann auf einzelnen Seiten lediglich "Access denied!" anzeigen lassen als das Menue zu filtern und dann Leute trotzdem auf die Seite zu lassen wenn sie den richtigen Link erraten.
Bei meinem Management-System fuer EasyLFS an dem ich grad arbeite hab ich die Rechte in der Datenbank abgelegt. In den Scripts werden diese auf Konstanten abgebildet die dann dazu genutzt werden zu entscheiden ob Zugriff erfolgen darf oder nicht.
Mal die Gruppenverwaltung als Beispiel:
Wie Du siehst gibt es bei mir Rechte in 2 Stufen: Globale und projekt-bezogene Rechte. Jedes Recht setzt ein Bit. Die Gesamtrechte fuer einen User hole ich mit der folgenden Funktion:PHP-Code:if ((($projectno==0) && ($permissions & PERM_GROUPS)) || (($projectno!=0) && ($permissions & PERM_PROJ_GROUPS)))
{
Hier werden die globalen Rechte und die Rechte aus Gruppen zum jeweiligen Projekt zusammengesetzt.PHP-Code:function getpermissions($user,$project,&$multisql)
{
if ($user==false)
{
return 0;
}
$resultset=$multisql->getresultset();
$multisql->query("select `grouppermissions`.`value` from `grouppermissions` join `groups` on `groups`.`id`=`grouppermissions`.`group` where `groups`.`id` in (select `group` from `usergroups` where `user`=".$user.") and `groups`.`project` in (0,".$project.")");
$permissions=0;
while ($userpermissions=$multisql->fetch_assoc())
{
$permissions|=$userpermissions['value'];
}
$multisql->setresultset($resultset);
return $permissions;
}
Da die Rechte binaer abgebildet sind ist dies ja kein Problem.
Hier die von mir genutzten Rechte:
Code sql:1 2 3 4 5 6 7 8 9 10 11 12
INSERT INTO `permissions` (`value`,`permission`,`constname`,`global`) VALUES (1,'Manage Site','PERM_SITE',TRUE), (2,'Manage Projects','PERM_PROJECTS',TRUE), (4,'Manage Groups','PERM_GROUPS',TRUE), (8,'Manage Menus','PERM_MENUS',TRUE), (16,'Manage Documents','PERM_DOCS',TRUE), (32,'Manage Project-Infos','PERM_PROJ_PROJECTS',FALSE), (64,'Manage Project-Groups','PERM_PROJ_GROUPS',FALSE), (128,'Manage Project-Menus','PERM_PROJ_MENUS',FALSE), (256,'Manage Project-Documents','PERM_PROJ_DOCS',FALSE), (512,'Manage Project-Packages','PERM_PROJ_PAKS',FALSE), (1024,'Manage Project-Files','PERM_PROJ_FILES',FALSE);
God-Mode ist entsprechend 2047, dabei sind dann alle Bits gesetzt und somit voller Zugriff moeglich.
Rechte werden bei mir nicht dem User zugeteilt, sondern einer Gruppe. Eine Gruppe kann wiederum einem Projekt zugeteilt sein oder eben auch nicht.
Und natuerlich kann jeder User in mehreren Gruppen sein.
Wie in der Funktion gezeigt ergeben sich die Rechte des Users dann eben aus den Rechten die er ueber die Mitgliedschaft in verschiedenen Gruppen hat, allen globalen Gruppen in denen er Mitglied ist und allen Gruppen des aktuellen Projekts in denen er Mitglied ist.PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
10.10.07 00:07 #3
- Registriert seit
- Jul 2007
- Ort
- Quakenbrück
- Beiträge
- 756
Ich hab ja vor auf den Seiten auch nch mal seperat das Recht prüfen zu lassen... Aber ich möchte nicht unbedingt jeden Skript um mehr als ein include erweitern, um das Abfragen und prüfen der Rechte mit ner seperaten File zu machen...
Spart mir auch arbeit, wenn ich für andere Projekte andere Rechte benutze
Ach ja und ich bastel mein eigenes CMS
mein erstes
Geändert von Chaosengel_Gabriel (10.10.07 um 00:09 Uhr)
Schnellste Hilfe -> www.gidf.dePHP-Code:($hilfe=='hilfreich') ? bewerten(positiv) : ignore_post();
Wer aus meiner Gegend kommt, kann sich gern mal melden, kenn hier keenen ;)
-
11.10.07 01:53 #4
- Registriert seit
- Jul 2007
- Ort
- Quakenbrück
- Beiträge
- 756
Keine Idee, wie ich nen Skript unterbrechen kann, ohne if (x=a){}else{} um das bestehende Skript zu schreiben?
Schnellste Hilfe -> www.gidf.dePHP-Code:($hilfe=='hilfreich') ? bewerten(positiv) : ignore_post();
Wer aus meiner Gegend kommt, kann sich gern mal melden, kenn hier keenen ;)
-
11.10.07 14:12 #5
- Registriert seit
- Aug 2007
- Ort
- Salzburg, Österreich
- Beiträge
- 50
Sowas? --> Ganz einfach auf jeder Seite ganz oben einfügen. Wenn der Benutzer keine Rechte besitzt die Seite anzuzeigen brichst du die Code-Ausführung mit die() ab.PHP-Code:if($no_permission)
{
die("Sorry sir, don't wanna show ya the page.");
}
-
11.10.07 14:22 #6
- Registriert seit
- Jan 2004
- Ort
- Paderborn
- Beiträge
- 1.210
Machs dir doch nicht so schwer ..
PHP-Code:if(!$loggedin) {
header("Location: index.php?page=access_denied");
}
-
11.10.07 14:32 #7
- Registriert seit
- Mar 2007
- Ort
- Bornhagen (Thüringen)
- Beiträge
- 51
Allso, ich kann da nur .htaccess zu sagen

Lg MohagGeändert von Mohag (12.10.07 um 13:47 Uhr)
Einstein sagte einmal,
wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden.
Das ist Relativität.
-
12.10.07 20:01 #8
- Registriert seit
- Jul 2007
- Ort
- Quakenbrück
- Beiträge
- 756
.htaccess schützt nur das Verzeichnis vor direktem Zugriff, aber nicht die Files darin vorm includen...
Die idee mit em die() werd ich probieren, damit wirds schon werden...
War mir nur nicht klar, wie ich mit einem Befehl das ganze Skript anhalten kann...Schnellste Hilfe -> www.gidf.dePHP-Code:($hilfe=='hilfreich') ? bewerten(positiv) : ignore_post();
Wer aus meiner Gegend kommt, kann sich gern mal melden, kenn hier keenen ;)
-
16.10.07 13:06 #9
- Registriert seit
- Aug 2007
- Ort
- Salzburg, Österreich
- Beiträge
- 50
Bitte aufpassen!
Ein Header bricht nicht die Ausgabe ab ... hast du z.B. sensitiven Code hinterbei wird der immer noch angezeigt!
zeigt folgenden Code an wenn man ihn über telnet ansteuert:PHP-Code:<?php
header("Location: http://localhost");
echo "VORSICHT! Ich bin immer noch sichtbar!";
?>
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
C:\Dokumente und Einstellungen\root>nc localhost 80 GET /_sandkasten/security_test/header_secure.php HTTP/1.1 Host: localhost HTTP/1.1 302 Found Date: Tue, 16 Oct 2007 11:04:55 GMT Server: Apache/2.0.54 (Win32) mod_ssl/2.0.54 OpenSSL/0.9.8 PHP/5.0.4 mod_autoindex_color X-Powered-By: PHP/5.0.4 Location: http://localhost Content-Length: 38 Content-Type: text/html VORSICHT! Ich bin immer noch sichtbar!
Besser also
PHP-Code:if(!$loggedin) {
header("Location: index.php?page=access_denied");
die();
}
"Nichts tun macht nur dann Spass, wenn man eigentlich viel zu tun hätte."
Ähnliche Themen
-
Binäres Rechtesystem
Von Avedo im Forum PHPAntworten: 44Letzter Beitrag: 13.03.09, 15:16 -
Rechtesystem PHP
Von dark-staple im Forum Coders TalkAntworten: 3Letzter Beitrag: 24.07.08, 16:01 -
Problem mit meinem Rechtesystem
Von fanste im Forum PHPAntworten: 5Letzter Beitrag: 01.12.07, 18:17 -
Rechtesystem mit Bits
Von mukraker im Forum PHPAntworten: 2Letzter Beitrag: 07.03.04, 17:13





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren