Sicherheit, Fehler, Warnungen und Logging verarbeiten

In diesem Abschnitt werden folgende Themen behandelt:

Sicherheit

Eine Datenquelle kann in einem von zwei Zugriffsmodi verwendet werden:

  • Im eingeschränkten Zugriffsmodus (Standardeinstellung) stellt eine Datenquelle nur Anfragen aus derselben Domain bereit, in der sich die Datenquelle befindet. Der eingeschränkte Modus verhindert XSRF-Angriffe (Cross-Site Request Forgery) und ist daher sicherer als der uneingeschränkte Zugriffsmodus. Da die Datenquellenbibliothek eine Schnittstelle bietet, mit der nur Daten zurückgegeben und der Status oder die Daten auf der Serverseite nicht geändert werden können, sind nur XSRF-Angriffe möglich, die versuchen, Daten zu stehlen. Damit Ihre Datenquelle vor Datendiebstahl geschützt wird, muss der eingeschränkte Modus in Verbindung mit der cookiebasierten Authentifizierung verwendet werden. Die Art der Nutzerauthentifizierung hängt von Ihrer Umgebung und Implementierung ab.

  • Im Modus für uneingeschränkten Zugriff werden von einer Datenquelle alle Anfragen unabhängig von ihrem Ursprung bereitgestellt. Eine Datenquelle, die im uneingeschränkten Modus ausgeführt wird, kann durch eine Cookie-basierte Authentifizierung geschützt werden. Die Datenquelle ist jedoch anfällig für XSRF-Angriffe. Verwenden Sie den uneingeschränkten Modus, wenn Visualisierungen auf Webseiten außerhalb der Domain der Datenquelle auf die Datenquelle zugreifen müssen oder wenn sich die Daten in der öffentlichen Domain befinden und nicht geschützt werden müssen.

In einer Visualisierungsanfrage kann ein Antwortformat von 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, können Sie von anderen Domains aus darauf zugreifen, auch im eingeschränkten Modus.

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

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

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

Fehler und Warnungen

Wenn es nicht möglich oder wünschenswert ist, eine gültige Datentabelle zurückzugeben, gibt die Bibliothek eine DataSourceException aus. Beispiel: Der Nutzer kann nicht authentifiziert werden. Die Bibliothek löst diese Ausnahmen aus, wenn sie aufgrund von Fehlern keine Datentabelle erstellen können. In Situationen, die nur für Ihre Datenquelle gelten, können Sie Ausnahmen festlegen. Erstellen Sie in diesem Fall 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 obligatorisch. Die verfügbaren Grundtypen sind 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 er als Kurzinfo angezeigt. Daher ist es wichtig, keine technischen oder vertraulichen Informationen anzugeben.

Sie können die Hilfsfunktionen in datasource.DataSourceHelper verwenden, um Fehler zu verarbeiten. In diesem Fall rufen Sie zwei Funktionen mit demselben Namen von setErrorServletResponse auf, um einen DataSourceException zu übernehmen und für die Daten-Servlet-Antwort einen Fehler festzulegen. Eine dieser Funktionen verwendet eine Anfrage für eine Datenquelle, die andere eine HttpServlet request und wird verwendet, wenn beim Erstellen einer DataSourceRequest ein Fehler auftritt. Eine Beispielimplementierung finden Sie unter Funktionen und den Ablauf von Ereignissen definieren.

Wenn eine Datentabelle nicht zurückgegeben werden kann, gibt die Bibliothek einen Fehler zurück. Wenn eine Datentabelle möglich ist, aber ein Problem gemeldet wird, gibt die Bibliothek zusammen mit der Datentabelle eine Warnung zurück. Die Bibliothek erstellt beispielsweise eine Warnung in den folgenden Situationen:

  • Wenn eine Abfragevisualisierung ein LIMIT liefert, das zu abgeschnittenen Daten führt.
  • Wenn eine Abfragevisualisierung ein ungültiges Formatierungsmuster in einer FORMAT-Klausel anfordert.

Wenn Sie eine eigene Warnung hinzufügen möchten, erstellen Sie eine Instanz von base.Warning und fügen Sie sie der Datentabelle mit der Methode addWarning() hinzu.

Logging

Die Bibliothek nutzt Jakarta Commons Logging. Jakarta-Commons-Logging kann mit den gängigsten Logging-Systemen verwendet werden, die Sie möglicherweise bereits haben. Sie müssen möglicherweise einen Adapter schreiben, wenn Ihr Logging-System nicht standardmäßig ist. Weitere Informationen finden Sie auf der Jakarta-Commons-Logging-Startseite.

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.