문제
SQL 기반 데이터 원본이나 Rserve 서버에서 데이터를 가져오는 Tableau 통합 문서로 작업할 때 데이터 원본으로 직접 전송되는 식을 포함하는 계산을 만들 수 있습니다. 이는 통과 식(pass-through expression)이라고 합니다. 이러한 유형의 식에 대해서는 다음 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이 값을 명령으로 처리하지 않으므로 안전하지 않은 스크립트로 간주되지 않습니다.