Klassenformeln in Filtern
Informationen
- Kategorien: Kernel | Klassenformeln
- Version: 21.0.0.11226
- Veröffentlichungsdatum: Mittwoch, 12. Juli 2017
- Entwickler: Fischer
- Benötigt Datenbankänderung: Nein
- Betreff: Werte für Filterbedingungen können durch Klassenformel-Funktionen berechnet werden
Beschreibung
Klassenformeln in Filtern (Filter-Klassenformel)
Mit der aktuellen Erweiterung lassen sich Klassenformeln in Filterbedingungen verwenden. Die Klassenformeln in Filtern werden analog zu den bisherigen und weiterhin vorhandenen Filter-Formeln verwendet. Sie bestimmen den Wert einer Filterbedingung. Vorhandenen Klassenformeln können im Filtermanager-Dialog unter Parameterliste betrachtet und bearbeitet werden.
Sicherheitskonzept Klassenformeln in Filtern stellen ein erhöhtes Sicherheitsrisiko dar. Einerseits sollen sie den Entwicklern alle Möglichkeiten bereitstellen beliebige Werte für Filterbedingungen zu berechnen. Andererseits soll einem Angreifer keine Möglichkeit gegeben werden für ihn geltende Einschränkungen zu umgehen. Eine Filter-Klassenformel wird deshalb in einer von zwei Sicherheitsstufen ausgeführt.
- In Sicherheitsstufe 'trusted' existieren keine Einschränkungen. Beliebige Funktionen dürfen aufgerufen werden, es besteht voller Zugriff auf die Datenbank.
- In Sicherheitsstufe 'safe' dürfen nur als sicher („safe“) eingestufte Funktionen aufgerufen werden. Ein Zugriff auf die Datenbank ist nicht möglich.
Prinzipiell kann jeder Nutzer eine Filter-Klassenformen erstellen und diese als Filterwert zuweisen. Beim Erstellen bzw. Ändern der Filter-Klassenformel übernimmt diese automatisch die Sicherheitsstufe des Nutzers. Eine von einem Nutzer mit Sicherheitsstufe 'safe' erstellte Klassenformel wird auch in Sicherheitsstufe 'safe' ausgeführt. Werden unsichere Funktionen aufgerufen, wird eine entsprechende Fehlermeldung ausgegeben und die Ausführung verweigert. Bei als vertrauenswürdig eingestuften Nutzern mit Sicherheitsstufe 'trusted' übernimmt die Filter-Klassenformel dessen Sicherheitsstufe und erhält dadurch unbegrenzten Zugang auf das System. Die Funktionalität der Filter-Klassenformel liegt im Verantwortungsbereich des vertrauenswürdigen Nutzers.
ÜBLICHERWEISE SOLLTEN NUR SOLCHE NUTZER ALS VERTRAUENSWÜRDIG EINGESTUFT WERDEN, DIE AUCH ALS SYSTEMADMINISTRATOREN ZUGANG ZU KLASSENFORMELN HABEN.
Beim Ausführen des Filters bzw. der enthaltenen Klassenformeln wird die Sicherheitsstufe des Nutzers nicht beachtet. Somit kann ein vertrauenswürdiger Nutzer allen anderen Nutzern Filter mit Klassenformeln zur Verfügung stellen, die unbegrenzten Zugang zum System haben. Technisch wird dies durch Signieren der Filter-Klassenformel erreicht. Die Signatur ist eine verschlüsselte Prüfsumme der Klassenformel. Nur bei Nutzern der Sicherheitsstufe 1 wird die Klassenformel nach dem Erstellen bzw. Ändern automatisch neu signiert. Alle auf andere Weise erfolgten Änderungen führen dazu, dass die Signatur ungültig wird. Dazu gehören Änderungen durch Nutzer einer niedrigeren Sicherheitsstufe als auch durch die direkte Bearbeitung der Filter-Dateien.
Die Sicherheitsstufe eines Nutzers bezüglich Filter-Klassenformeln wird über ein neues Systemrecht gesteuert.
• Systemrechtgruppe/Funktionsbereich: o Name = FILTER • Systemrecht: o Name = FILTER_FORMULA o Anzeigename = In Filter-Formeln erlaubt o Bezeichnung Stufe 1 = const Funktionen o Bezeichnung Stufe 2 = nur sichere const Funktionen
Verwendung Eine Filter-Klassenformel ist eine Funktion. Sie besteht aus einem automatisch generierten Funktionskopf und einem editierbaren Funktionskörper. Der Funktionskopf wird automatisch aus dem Namen der Filter-Klassenformel, den im Filter definierten Parametern (= Funktionsargumente) und dem Typ der Filterbedingung (= Rückgabetyp) erstellt. Filter-Klassenformeln werden nach der Eingabe der Parameter-Werte durch den Nutzer ausgeführt. Dazu wird ein Parameter erstellt. Die Parameter-Werte werden der Funktion als Argumente übergeben. Im Beispiel wurde ein Parameter mit dem Namen „Lastname“ und dem Aufforderungstext „Nachname“ erstellt. Die Filter-Klassenformel wird automatisch um das Funktionsargument „$Lastname“ erweitert.