SuperX

KontaktMail für InfosSuchenLogin

Sperrung von Berichten für HTTP GET-Anfragen

Vorbemerkung: GET Anfragen werden für Masken in folgenden Szenarien erstellt:

  • Deeplinks oder Lesezeichen
  • Umsortieren der Spalten / Zeilen einer Ergebnistabelle
  • Kommandozeilengesteuerte Ausführung von Masken
  • Portlets

Dabei wird in der URL der jew. Parameter mit übergeben, z.B.

Dies ist kein Problem, solange die Maske zur reinen Anzeige von Daten dient; unter anderem das "Masken-SQL" kann allerdings auch Statements zur Datenmanipulation enthalten (z. B. INSERT/UPDATE) - das wurde in einigen Fällen genutzt, um über Masken administrative Funktionen zur Verfügung zu stellen (z. B. Maske kopieren).

Dies ist grundsätzlich ein Sicherheitsrisiko:
Wenn ein Benutzer mit entsprechenden Rechten in die BI eingeloggt ist und eine andere Seite in seinem Browser aufruft, kann darin ein vom Browser automatisch ausgewerteter Link auf den Bericht untergebracht sein (z. B. als URL auf ein Bild) und mit entsprechend gewählten Suchparametern eine ungewollte und unbewusste Datenmanipulation hervorrufen.

Aus diesem Grund wurde im SuperX-Kernmodul 5.0 bzw. HISinOnbe-BI 2023.06 umgesetzt:

  • Alle Masken sind defaultmäßig in der "Blacklist", d.h. sie lassen sich nicht über GET aufrufen.
  • Es gibt aber die Möglichkeit, HTTP GET-Aufrufe für bestimmte Berichte zu unterbinden. Zu diesem Zweck werden Dateien mit den Namen
    • http_get_masken_blacklist.txt
    • http_get_masken_blacklist_custom.txt
    • http_get_masken_whitelist.txt"

im Verzeichnis

...webapps/superx/WEB-INF

beim Tomcat Start ausgewertet:

Die "http_get_masken_blacklist.txt" enthält die tids aller Masken, welche in der Standardauslieferung nicht über HTTP GET aufrufbar sind - an dieser Datei dürfen auch keine Änderungen vorgenommen werden, da diese durch ein neue Releases und Hotfixes überschrieben würden. Will man diese Liste erweitern, so muss man eine (utf-8) Datei "http_get_masken_blacklist_custom.txt" mit gleichem Format im selben Verzeichnis anlegen. Wenn man (wieder im selben Verzeichnis) eine (utf-8)-Datei "http_get_masken_whitelist.txt" mit gleichem Format anlegt, dann überbrückt diese die beiden anderen Dateien:

Statt einer "blacklist" mit Masken-tids, für die der Aufruf über HTTP GET unterbunden wird, gibt es dann eine "whitelist" mit Masken-tids, für die der Aufruf per HTTP GET erlaubt ist - für alle anderen wird er unterbunden.

Änderungen an den Dateien werden nur bei einem Neustart des Tomcat-Servers wirksam.

Im Clusterbetrieb ist natürlich darauf zu achten, dass Dateien mit eigener Konfiguration auf alle Knoten verteilt werden. Unterbundene HTTP GET-Aufrufe werden im Log vermerkt.

Auf eine Ausnahme sei an dieser Stelle noch hingewiesen:

HTTP GET-Aufrufe mit dem Parameter getKidRows werden immer zugelassen, da sie für Berichte mit Drilldown-Funktion notwendig sind - das ist aber in Ordnung, da sie keine Datenmanipulation auslösen.

Faustregel: Masken, die Daten nur lesen, können in die "whitelist", und Masken, die Daten auch verändern, sollten in die "blacklist".

Nach einer Änderung von Black- oder Whitelist muss der Tomcat neu gestartet werden.