Problem
Wenn eine Tableau-Arbeitsmappe die Daten aus einer SQL-basierten Datenquelle oder von einem Rserve-Server erhält, können Sie Berechnungen mit Ausdrücken erstellen, die dann direkt an die Datenquelle gesendet werden (Pass-through-Ausdrücke). Diese Arten von Ausdrücken werden in der folgenden Dokumentation zu Tableau Desktop beschrieben:Die Pass-Through-Funktionen sind daran erkennbar, dass ihr Name mit RAWSQL_
oder SCRIPT_
beginnt.
Unter bestimmten Umständen werden Pass-through-Ausdrücke als Vektoren für SQL-Injection-Angriffe herangezogen, bei denen ein Angreifer böswillige Befehle als Werte in die Skripten angibt. Dieser Fall kann eintreten, wenn eine Berechnung in der Arbeitsmappe alle folgenden Kriterien erfüllt:
-
Die Berechnung enthält eine Funktion
SCRIPT_
oderRAWSQL_
. -
Der Ausdruck verwendet einen Wert, der über einen Parameter in der Arbeitsmappe an die Berechnung übergeben wird.
-
Der Parameter ist als Zeichenfolge angegeben.
-
Der Parameter ist der erste Parameter, der an die Berechnung übergeben wird.
-
Der Parameter ist nicht in Anführungszeichen eingeschlossen.
Im nachfolgenden Ausdruck soll Parameter 1
beispielsweise einen Zeichenfolgenwert (z. B. klein, mittel oder groß) enthalten.
RAWSQL_STR([Parameter 1])
Wenn ein Benutzer jedoch in der Lage ist, einen beliebigen Text als Wert für Parameter 1
festzulegen, kann dieser Benutzer potenziell einen SQL-Injection-Angriff zusammenstellen.
Ein solcher Ausdruck, der potenziell böswillige Befehle enthalten kann, wird daher als unsicheres Skript bezeichnet.
Beachten Sie das letzte Kriterium: Unsichere Skripten enthalten Parameter ohne Anführungszeichen. Ein Beispiel:
RAWSQL_BOOL("%1", [Parameter 1])
Dieses Beispiel ist kein unsicheres Skript, da der Wert für Parameter 1
in Anführungszeichen eingeschlossen ist; SQL behandelt den Wert also nicht als Befehl.