Problemas
Quando você utiliza uma pasta de trabalho que recebe dados de uma fonte de dados baseada em SQL ou de um servidor Rserve, é possível criar cálculos com expressões enviadas diretamente à fonte de dados, conhecidas como expressões de passagem. Esses tipos de expressões são descritas nas seguintes documentações do Tableau Desktop:As funções de passagem são aquelas cujos nomes começam com RAWSQL_
ou SCRIPT_
.
Em algumas circunstâncias, as expressões de passagem podem ser vetores para ataques de injeção SQL, ou seja, um ataque pode ser capaz de incluir comandos mal-intencionados nelas como se fossem valores. Isso pode acontecer quando a pasta de trabalho tiver um cálculo que atenda a todos os critérios a seguir:
-
O cálculo inclui uma função
SCRIPT_
ouRAWSQL_
. -
A expressão usa um valor passado de um parâmetro na pasta de trabalho para o cálculo.
-
O parâmetro é digitado como uma cadeia de caracteres.
-
O parâmetro é o primeiro parâmetro passado para o cálculo.
-
O parâmetro não está entre aspas.
Por exemplo, na expressão a seguir, Parameter 1
pode ter a intenção de conter um valor de cadeia de caracteres, como pequeno, médio ou grande.
RAWSQL_STR([Parameter 1])
Entretanto, se um usuário puder definir o valor de Parameter 1
como um texto arbitrário, ele poderia criar um ataque de injeção SQL.
Como uma expressão parecida com essa poderia incluir comandos mal-intencionados, ela é chamada de script inseguro.
Observe o último critério: scripts inseguros contêm parâmetros que não estão entre aspas. Veja o exemplo a seguir:
RAWSQL_BOOL("%1", [Parameter 1])
Esse exemplo não é um script inseguro, porque o valor de Parameter 1
está entre aspas, então o SQL não trata o valor como um comando.