Umgang mit Sicherheit, Fehlern, Warnungen und Logging

In diesem Abschnitt werden folgende Themen behandelt:

Sicherheit

Für Datenquellen gibt es zwei verschiedene Zugriffsmodi:

  • Im Standardmodus für eingeschränkten Zugriff verarbeitet eine Datenquelle nur Anfragen, die von derselben Domain stammen, in der sich auch die Datenquelle befindet. Der eingeschränkte Modus verhindert Cross-Site Request Forgery (XSRF)-Angriffe und ist somit sicherer als der Modus mit uneingeschränktem Zugriff. Da die Datenquellenbibliothek nur eine Schnittstelle für die Rückgabe von Daten und nicht für die Änderung des Status oder der Daten auf Serverseite bietet, sind nur XSRF-Angriffe, bei denen versucht wird, Daten zu stehlen, möglich. Um Ihre Datenquelle vor Versuchen zu schützen, Daten zu stehlen, muss der eingeschränkte Modus in Verbindung mit einer cookiebasierten Authentifizierung verwendet werden. Wie Sie Nutzer authentifizieren, hängt von Ihrer Umgebung und Implementierung ab.

  • Im Modus mit uneingeschränktem Zugriff verarbeitet eine Datenquelle alle Anfragen unabhängig von ihrem Ursprung. Eine Datenquelle, die im uneingeschränkten Modus ausgeführt wird, kann durch cookiebasierte Authentifizierung geschützt werden. Beachten Sie jedoch, dass die Datenquelle anfällig für XSRF-Angriffe ist. Verwenden Sie den uneingeschränkten Modus, wenn Visualisierungen auf Webseiten außerhalb der Domain der Datenquelle auf die Datenquelle zugreifen müssen oder wenn die Daten öffentlich zugänglich sind und daher nicht geschützt werden müssen.

Für eine Visualisierungsanfrage kann das Antwortformat JSON, CSV oder HTML angegeben werden. Das Antwortformat bestimmt das Format, in dem eine Datenquelle eine Datentabelle zurückgibt. Da CSV- und HTML-Formate nicht anfällig für XSRF-Angriffe sind, kann auch im eingeschränkten Modus von anderen Domains darauf zugegriffen werden.

Wenn Sie den uneingeschränkten Modus angeben möchten, überschreiben Sie isRestrictedAccessMode() so:

  @Override
  protected boolean isRestrictedAccessMode() {
    return false;
  }

Der Einfachheit halber werden alle mit der Bibliothek bereitgestellten Beispiele im Modus mit uneingeschränktem Zugriff ausgeführt.

Fehler und Warnungen

Wenn es nicht möglich oder wünschenswert ist, eine gültige Datentabelle zurückzugeben, gibt die Bibliothek einen DataSourceException-Fehler aus. Dies ist beispielsweise der Fall, wenn der Nutzer nicht authentifiziert werden kann. Die Bibliothek löst diese Ausnahmen aus, wenn Fehler das Erstellen einer Datentabelle verhindern. In Situationen, die nur für Ihre Datenquelle gelten, können Sie Ausnahmen auslösen. Wenn ja, erstellen Sie eigene Fehlerausnahmetypen, indem Sie sie von der Klasse DataSourceException übernehmen. Sie können die Klasse DataSourceException auch direkt auslösen.

Die Klasse DataSourceException befindet sich im Paket base und verwendet die folgenden Parameter:

  • ReasonType 
    Dieser Parameter ist erforderlich. Verfügbare Grundtypen werden in der Aufzählung ReasonType definiert. Wenn keiner der verfügbaren Grundtypen geeignet ist, können Sie Other oder Internal verwenden.
     
  • MessageToUser 
    Dieser Parameter definiert den Text der Fehlermeldung. In den meisten Fällen wird sie dem Nutzer als Kurzinfo angezeigt. Daher ist es wichtig, keine technischen oder vertraulichen Informationen anzugeben.

Zur Fehlerbehandlung stehen die Hilfsfunktionen in datasource.DataSourceHelper zur Verfügung. Rufen Sie in diesem Fall zwei Funktionen mit dem Namen setErrorServletResponse auf, um eine DataSourceException zu verwenden und einen Fehler in der Antwort des DatenServlets festzulegen. Eine dieser Funktionen verwendet eine Datenquellenanfrage, die andere auf HttpServlet request und wird verwendet, wenn beim Erstellen einer DataSourceRequest ein Fehler auftritt. Eine Beispielimplementierung finden Sie unter Funktionen und Ereignisfluss definieren.

Wenn keine Datentabelle zurückgegeben werden kann, gibt die Bibliothek einen Fehler zurück. Wenn eine Datentabelle zurückgegeben werden kann, aber ein Problem gemeldet werden kann, gibt die Bibliothek zusammen mit der Datentabelle eine Warnung zurück. Die Bibliothek gibt beispielsweise in den folgenden Situationen eine Warnung aus:

  • Eine Abfragevisualisierung liefert einen LIMIT, der zu abgeschnittenen Daten führt.
  • Bei einer Visualisierungsabfrage wird ein ungültiges Formatierungsmuster in einer FORMAT-Klausel angefordert.

Erstellen Sie eine Instanz von base.Warning und fügen Sie sie mit der Methode addWarning() Ihrer Datentabelle hinzu, um eine eigene Warnung hinzuzufügen.

Protokollierung

Die Bibliothek nutzt die Abholzung von Jakarta Commons. Jakarta Commons-Logging kann mit den meisten gängigen Logging-Systemen verwendet werden, die Sie möglicherweise bereits haben. Möglicherweise müssen Sie einen Adapter schreiben, wenn Ihr Logging-System kein Standard ist. Weitere Informationen finden Sie auf der Startseite für das Logging von Jakarta Commons.

Wenn eine Ausnahme ausgelöst wird, werden Informationen an das Log gesendet. Wie Sie auf das Log zugreifen, hängt vom verwendeten Logging-System ab.