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).
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.
Nach einer Änderung von Black- oder Whitelist muss der Tomcat neu gestartet werden.