WaBis

walter.bislins.ch

User-Datenbank

In der User-Datenbank werden die Name, Passwort und Zugriffsrechte registrierter User gespeichert.

Die User-Datenbank ist eine Text-Datei mit einem speziellen Format. Sie sollte in einem von aussen nicht zugreifbaren Verzeichnis abgelegt werden. Die Einträge sind verschlüsselt. Wo die Datenbank gespeichert ist, wird durch durch die beiden Variablen WIKI_ROOT + WIKI_USERS festgelegt. WIKI_ROOT wird jeweils in der index.asp Datei eines Wikis definiert und WIKI_USERS in WIKI_ROOT + app_stuff/wikidefaults.inc.

Die User-Datenbank wird über Erweiterte Wiki-Funktionen von einem Administrator verwaltet:

 User Administration

Passwort vergessen

Hat ein User sein Passwort vergessen, muss ein Administrator dem User ein neues Passwort zuweisen, da selbst der Administrator das alte Passwort nicht herausfinden kann.

Ein Passwort kann prinzipiell auf keine Art und Weise irgendwie ermittelt werden! Meldet sich ein User beim Wiki an (Login), so wird aus dem im Login-Formular eingegebenen Passwort der Hash-Wert berechnet und dieser wird mit dem Hash-Wert in der Datenbank verglichen. Stimmen die beiden Hash-Werte überein, bekommt der User Zugriff.

 Sicherheitsaspekte

Aufbau der User-Datenbank

Die User-Datenbank ist eine reine Text-Datei in einem an XML angelehnten Format.

<Tag>Wert</>
<Tag>
  weitere Tags...
</Tag>

Die Reihenfolge der benannten Tags ist beliebig. Leerzeilen werden ignoriert, ebenso Zeilen mit einem HTML-Kommentar.

<WikiUsers>
  <User>
    <Name>Username</>
    <Password>Passwort</>
    <DefaultRight>AccessLevel</>
    <DefaultOwnerRight>AccessLevel</>
    <WikiRights>AccessList</>
    <OwnerRights>AccessList</>
  </User>
  <User>
    <!-- Weiterer User -->
  </User>
</WikiUsers>

Alle Tag-Werte sind verschlüsselt. Die Einträge werden über die User Administration erzeugt oder verändert. Die Einträge haben folgende Bedeutung:

<User>
Kennzeichner für einen User-Datenblock
Username
Login-Name des Users. Er ist damit registriert und kann besondere Rechte zugewiesen bekommen.
Password
Passwort des Users als verschlüsselter Hashwert.
DefaultRight (optional): AccessLevel
Standard-Zugriffsrechte für alle unter WikiRights nicht explizit aufgeführten Wikis. Diese Rechte kommen zum Tragen wenn der User nicht Owner der aktuellen Seite ist.
DefaultOwnerRight (optional): AccessLevel
Standard-Zugriffsrechte für alle unter OwnerRights nicht explizit aufgeführten Wikis. Diese Rechte kommen zum Tragen wenn der User Owner der aktuellen Seite ist.
WikiRights (optional): AccessList
Eine durch ; getrennte Liste von Zugriffsrechten für bestimmte Wikis. Diese Rechte kommen zum Tragen, wenn der User nicht Owner der aktuellen Seite ist.
OwnerRights (optional): AccessList
Eine durch ; getrennte Liste von Zugriffsrechten für bestimmte Wikis. Diese Rechte kommen zum Tragen, wenn der User Owner der aktuellen Seite ist.

Wenn ein bestimmtes Wiki nicht in einer der Listen WikiRights und OwnerRights aufgeführt ist, so gelten die bei DefaultRight bzw. DefaultOwnerRight angegebenen Rechte. Werden dort auch keine Angaben gemacht, so gelten die Standardrechte, welche bei den Wikis bzw. den übergeordneten Wiki-Gruppen definiert sind.

AccessLevel
eines der folgenden Worte (siehe User Rechte): none, read, disc, new, edit, manage, admin
AccessList
Eine durch ; getrennte Liste von Wiki:AccessLevel Paaren.

Beispiel WikiRights

WikiRights
Aviatik:edit; Biologie:manage

Dieser User hat im Wiki Aviatik das Recht, Seiten zu editieren (kann keine neuen Seiten anlegen) und hat im Wiki Biologie Verwaltungsrechte (kann alles machen). Für alle anderen Wiki gelten die bei DefaultRight und DefaultOwnerRight festgelegten Rechte bzw. die in der Wiki-Konfiguration festgelegten Rechte.

Achtung: Administrator-Rechte können nicht nur einem bestimmten Wiki zugeordnet werden. Wenn ein User Administrator-Rechte hat, dann hat er diese in allen Wiki, selbst wenn sie nur einem Wiki zugeordnet sind!

User Rechte

Das Wiki unterscheidet 4 User-Typen:

Public
sind alle User, die nicht registriert sind.
Registered
sind alle registrierten User, insbesondere auch Owner und Admin.
Owner
der aktuelle User wird als Owner bezeichnet, wenn er registriert ist und die aktuelle Seite erstellt hat bzw. als Owner bei der aktuellen Seite eingetragen ist.
Admin
ist ein registrierter User, welcher admin-Rechte hat. Er kann auch Owner sein.

Jeder User wird vom Wiki in einen der 3 Typen Public, Registered oder Owner eingestuft. Für jeden Usertyp können Zugriffsrechte auf Wiki-Seiten und Funktionen definiert werden. Für registrierte User können individuell für jedes Wiki andere Rechte eingestellt werden. Werden bei einem User keine Rechte angegeben, so gelten die Standardrechte, welche beim entsprechenden Wiki definiert sind oder globale Rechte, wenn dort auch nichts angegeben ist.

Die Rechte werden in verschiedenen Stufen eingestellt. Jede weitere Stufe schliesst die Rechte der vorherigen Stufe mit ein. Folgende Rechte können vergeben werden:

none
der User hat keine Rechte, kann also weder Wiki-Seiten betrachten, noch Wiki-Funktionen nutzen.
read
der User kann nur Seiten betrachten.
disc
der User kann zusätzlich Diskussions-Seiten erstellen
new
der User kann neue Seiten erstellen, kann aber nur eigene Seiten editieren, keine fremden (ausser Diskussions-Seiten).
edit
der User kann alle Seiten editieren.
manage
der User kann die Zugriffsrechte für Seiten ändern, sodass die Rechte anderer User für diese Seiten eingeschränkt oder erweitert werden.
admin
der User hat alle Rechte, insbesondere kann er Admin-Funktionen des Wikis ausführen.

Sicherheitsaspekte

Alle Einträge in der User-Datenbank sind verschlüsselt. Die Verschlüsselung ist derart, dass die Datenbank gegen Manipulationen geschützt ist. Versucht z.B. jemand in der Datenbank, ein Passwort oder eine Berechtigung von einem User zu einem anderen zu kopieren, erkennt das Wiki diese Manipulation und stopt mit der Fehlermeldung Wiki User Database corrupt.

Für Passwörter wird ein Hash-Wert generiert und der verschlüsselte Hash-Wert wird anstelle des Passwortes in der Datenbank gespeichert. Damit kann ein Passwort selbst dann nicht ermittelt werden, wenn es gelingt, die User-Datenbank zu entschlüsseln.

Die Berechnung des Hash-Wertes ist nicht umkehrbar. Das heisst, aus einem Hash-Wert kann nicht auf das Passwort geschlossen werden. Selbst dann nicht, wenn Algorithmus und Schlüssel zur Berechnung des Hash-Wertes bekannt sind.

Weitere Infos zur Seite
Erzeugt Mittwoch, 21. Juli 2010
von wabis
Zum Seitenanfang
Geändert Dienstag, 4. März 2014
von wabis