Untergeordnete Seiten
  • Absichern von DocumentDataProvider Implementierungen
Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Dieser Artikel beschreibt, wie Implementierungen von DocumentDataProvidern aus jadice web toolkit Version 5.5.5.0 und älter abgesichert werden können, um die Anzeige beliebiger Dokumente im Dateisystem des verwendeten Applikationsservers zu unterbinden. 

Hintergrund

Das serverseitige Laden von Dokumenten erfolgt im jadice web toolkit über kundenspezifische Implementierungen des Interfaces com.levigo.jadice.web.server.DocumentDataProvider. Teil der Distribution des jadice web toolkits sind diverse Demoanwendungen, die Kunden als Vorlage für ihre eigene, integrierende Anwendung dienen können. Bestandteil der Demoanwendungen sind Beispiel-Implementierungen von DocumentDataProvidern, die von Kunden als Vorlage für eigene spezifische Implementierungen genutzt werden können. Einige dieser Beispiel-Implementierungen extrahieren den Identifikator des zu ladenden Dokuments aus einer URL, die vom Browser an den Server geschickt wird. Aufgrund einer unzureichenden Prüfung dieser URL in den betroffenen Beispielimplementierungen, kann der Browser durch die Übermittlung einer präparierten URL das Laden einer beliebigen Datei im Dateisystem des Servers anstoßen (vorausgesetzt der Benutzer des Applikationsservers besitzt Leseberechtigung auf diese Datei).

In manchen Anwendungsfällen wird eine clientseitige Javascript API exponiert, über die der Identifikator des zu ladenden Dokuments von einer anderen Browseranwendung gesetzt werden kann. Die zugehörige exponierte Funktion kann dann auch über die Browserkonsole aufgerufen werden, um eine präparierte URL an den Server zu übertragen.

Betroffene Implementierungen

Betroffen sind die folgenden Implementierungen aus dem Package "com.levigo.jadice.web.demo.common.server.dataprovider"

  • UrlDocumentDataProvider
  • UrlRelativeDataProvider

Falls eine kundenspezifische Implementierung auf einer dieser beiden Beispielimplementierungen aufbaut, sollte eine Anpassung gemäß des folgenden Abschnitts erfolgen. 

Lösung

Um das Laden von Dateien aus dem Dateisystem des Applikationsservers zu unterbinden, kann die übermittelte URL serverseitig geprüft werden. Falls das Format der URL nicht der Erwartung entspricht, wird der Ladevorgang abgebrochen.

Codestelle

Eine angepasste Implementierung für die Klasse UrlRelativeDocumentDataProvider könnte folgendermaßen aussehen. Analog dazu könnte auch ein Fix für die Klasse UrlDocumentDataProvider aussehen:

Der oben aufgeführte Fix ist ab jadice web toolkit Version 5.6.0.0 Teil der Distribution. Die Klasse UrlRelativeDocumentDataProvider wurde mit jadice web toolkit Version 5.6.0.0 aus der Distribution gelöscht.

Content by label

There is no content with the specified labels

3 Kommentare

  1. Wie vorhin besprochen hier noch die "richtige" Lösung aus com.atlassian.confluence.macro.MacroExecutionException: java.lang.NullPointerException abwarten, Kristina Adlung ist dran.

  2. Der Artikel könnte doch in die Knowledge Base umgezogen werden, oder?

  3. Denke ich auch - würde ich aber erst machen, nachdem das verlinkte Ticket erledigt ist. Ggf. ändert sich dadurch noch der Inhalt.