Problema
Quando lavori con una cartella di lavoro di Tableau che acquisisce i dati da un'origine dati basata su SQL o da un server Rserve, puoi creare calcoli con espressioni che vengono inviate direttamente all'origine dati, ossia le espressioni pass-through. Questi tipi di espressioni sono descritti nella documentazione di Tableau Desktop seguente:Le funzioni pass-through sono quelle il cui nome inizia con RAWSQL_
o SCRIPT_
.
In alcune circostanze, le espressioni pass-through potrebbero essere i vettori di attacchi SQL injection: ciò che significa che un utente malintenzionato potrebbe essere in grado di includere comandi maligni nelle espressioni pass-through come valori. Questo può verificarsi quando la cartella di lavoro contiene un calcolo che soddisfa tutti questi criteri:
-
Il calcolo include una funzione
SCRIPT_
orRAWSQL_
. -
L'espressione usa un valore che viene passato al calcolo da un parametro nella cartella di lavoro.
-
Il parametro è digitato come stringa.
-
Il parametro è il primo parametro che viene passato al calcolo.
-
Il parametro non è contenuto tra punti interrogativi.
Ad esempio, nella seguente espressione, si potrebbe interpretare che Parameter 1
contiene un valore di stringa come piccolo, medio o grande.
RAWSQL_STR([Parameter 1])
Tuttavia, se un utente potesse impostare il valore di Parameter 1
su un testo arbitrario, potrebbe potenzialmente creare un attacco SQL injection.
Poiché un'espressione come questa potrebbe comprendere comandi dannosi, viene definita script non sicuro.
Nota sull'ultimo criterio: gli script non sicuri includono parametri non compresi tra punti interrogativi. Considera l'esempio seguente:
RAWSQL_BOOL("%1", [Parameter 1])
Questo esempio non costituisce uno script non sicuro, perché il valore di Parameter 1
è compreso tra punti interrogativi, quindi SQL non tratta il valore come un comando.