Implementierung von Zugriffsrechten

Hallo,

ich entwickle derzeit ein Projekt, in dem z.B. Personen-Daten verwaltet werden können (in PHP/MySQL, aber das dürfte hier irrelevant sein).
Das Projekt besitzt ein Login und soll nun noch eine Rechte-Verwaltung bekommen.

Funktionsweise:

  • es gibt mehrere Sicherheits-Level (z.B. Level A und B)
  • es gibt mehrere Benutzer-Gruppen (z.B. Gruppe 1 und 2)
  • Gruppe 1 darf auf beide Sicherheits-Level zugreifen (eine Art Super-User)
  • Gruppe 2 hingeben darf nur auf Level B zugreifen

Dabei tun sich in meinen Überlegungen folgende Probleme/Fragen auf:

) Prüfung auf vorhandene Datensätze

  • Gruppe 1 legt mit Level A einen Datensatz an (Name „Herr Mustermann“)
  • da Gruppe 2 auf Level A nicht zugreifen darf, wird sie diesen Eintrag nicht sehen
  • nun möchte Gruppe 2 auch diesen Benutzer anlegen

==> Problem 1
* sollte im Hintergrund geprüft werden, ob es diesen Namen schon gibt?
* dies würde aber Angriffspunkte liefern, denn so könnte man prüfen, ob für kritische Personen Daten existieren (zwar nicht, welche, aber DASS sie existieren)
==> Problem 2
* prüfe ich im Hintergrund nicht, ob es den Namen schon gibt, so würden die Namen doppelt drin sein

Ich glaube, ich sah da noch ein Problem, aber das ist mir gerade entfallen.

Aber was meint ihr erst mal dazu? Wie würdes ihr das lösen?
Seht ihr dabei weitere Probleme?

Danke

ajo

hallo ajo,

wenn dir der schutz von level A datensätzen (auch indirekt) wichtig ist, dann wirst du nicht um „doppelte“ einträge herumkommen. also wirst du nicht mehr den namen als schlüssel nehmen können, sondern musst dir einen sogenannten superschlüssel ausdenken.
oder du arbeitest mit 2 datenbanken, je level eine.

gruß
klaus

oder du arbeitest mit 2 datenbanken, je level eine.

Das Thema ist komplex, weswegen ich mich auch scheue konkret etwas dazu zu raten. Aber das ist keine gute Lösung. Die Anwendung hat den Zugriff zu regeln, nicht die Datenbank.

Evlt. kann man bei Portalprojekten spicken, wie die das gebaut haben. Und ich möchte fast wissen, daß es in der Richtung auch fertige Programmbibliotheken gibt.

hallo,

die beste technik für die masse ist nunmal was sie nicht sehen.
was hälst du von folgender regel?

wenn gruppe b einen namen bildet der schon bekannt ist, hänge im hintergrund ein für den user unsichbares zeichen an.

mehrfach namen gibt es ja, und so werden nur zusätzliche parameter überliefert, der kunde merkt nichts davon.

z.B: gruppe a: Max Mustermann
gruppe b: Max Mustermann§002

Hallo,

Prinzip verstanden. Aber leider nicht anwendbar in meinem Fall: Wie ich ja sagte, kann die eine Gruppe ja durchaus beide beide Levels sehen und würde dann zwei gleiche Namen zu Gesicht bekommen uns sich wundern.

Ich glaube, ich werde es doch so machen, dass beim Anlegen eines Namens geprüft wird, ob dieser schon existiert (ohne aber weitere Informationen über ihn preiszugeben).

LG

Ajo

mehrfach namen gibt es ja, und so werden nur zusätzliche
parameter überliefert, der kunde merkt nichts davon.

z.B: gruppe a: Max Mustermann
gruppe b: Max Mustermann§002

hallo nochmal,

dein fall ist der wie von anderen auch.
im internet gibt es sicherheitsstandarts die verhindern dass mann bei selbstprogrammierung in eine spielschleife gelangt die schwer zu überwinden ist.
mach die identitäten ruhig an ihrer email fest, wenn sie ein identitätsproblem haben sollen sie die zweiten vornahmen mit dazu schreiben.

der name kann sich ja bei menschenansammlungen gleichen, aber die email nicht.