問題
SQL ベースのデータ ソースまたは Rserve サーバーからデータを取得する Tableau ワークブックで作業を行う場合、データ ソースへ直接送信される式 (パススルー式) を使用して計算を作成できます。これらのタイプの式の説明は、次の Tableau Desktop ドキュメントに記載されています。パススルー関数は名前が RAWSQL_
または SCRIPT_
で始まります。
特定の状況では、パススルー式が SQL インジェクション攻撃のためのベクターとなる可能性があります。つまり、攻撃者がそれらに不正なコマンドを値として含めることができる可能性があります。このようなことは、これらの条件をすべて満たす計算がワークブックに含まれる場合に発生する可能性があります。
-
計算には
SCRIPT_
またはRAWSQL_
関数が含まれている。 -
式が、ワークブックのパラメーターから計算へパスされる値を使用する。
-
パラメーターが文字列として入力される。
-
パラメーターは計算にパスされる最初のパラメーターである。
-
パラメーターが引用符で囲まれていない。
たとえば、次の式では、Parameter 1
に small、medium、または large などの文字列値を含むように意図されている場合があります。
RAWSQL_STR([Parameter 1])
ただし、ユーザーが Parameter 1
の値を任意のテキストに設定可能な場合、そのユーザーは潜在的に SQL インジェクション攻撃を作成する可能性があります。
このような式には不正なコマンドが含まれる可能性があるため、安全でないスクリプトと呼ばれます。
最後の条件に注意してください。安全でないパラメーターには引用符のないパラメーターが含まれます。次の例を考えてみましょう。
RAWSQL_BOOL("%1", [Parameter 1])
この例では、Parameter 1
の値が引用符で囲まれており、SQL が値をコマンドとして処理しないため、安全なスクリプトを構成しています。