[HADOOP] Apache Spark : SparkSql에서 SQL은 Sql Injection에 취약합니다 [duplicate]
HADOOPApache Spark : SparkSql에서 SQL은 Sql Injection에 취약합니다 [duplicate]
대본:
Hive에 테이블이 있고 Apache Spark의 아래 SparkSql을 사용하여 테이블 이름이 인수로 전달되고 쿼리에 연결되는 쿼리가 있다고 가정합니다.
비 분산 시스템의 경우 SQL 인젝션 취약점에 대한 기본 지식을 가지고 있으며 JDBC 환경에서 이러한 종류의 시나리오에서 createStatement / preparedStatement의 사용법을 이해합니다.
그러나 sparksql의 경우이 시나리오는 어떨까요?이 코드는 취약합니까? 어떤 통찰력?
def main(args: Array[String]) {
val sconf = new SparkConf().setAppName("TestApp")
val sparkContext = new SparkContext(sconf)
val hiveSqlContext = new org.apache.spark.sql.hive.HiveContext(sparkContext)
val tableName = args(0) // passed as an argument
val tableData = hiveSqlContext.sql("select IdNUm, Name from hiveSchemaName." + tableName + " where IdNum <> '' ")
.map( x => (x.getString(0), x.getString(1)) ).collectAsMap()
................
...............
}
해결법
-
==============================
1.Spark 2.0에서 다음을 시도 할 수 있습니다.
Spark 2.0에서 다음을 시도 할 수 있습니다.
def main(args: Array[String]) { val conf = new SparkConf() val sparkSession = SparkSession .builder() .appName("TestApp") .config(conf) .enableHiveSupport() .getOrCreate() val tableName = args(0) // passed as an argument val tableData = sparkSession .table(tableName) .select($"IdNum", $"Name") .filter($"IdNum" =!= "") .map( x => (x.getString(0), x.getString(1)) ).collectAsMap() ................ ...............
}`
-
==============================
2.Java에서 일반적으로 SQL 주입 위협을 처리하는 가장 일반적인 방법은 prepared statement를 사용하는 것입니다.
Java에서 일반적으로 SQL 주입 위협을 처리하는 가장 일반적인 방법은 prepared statement를 사용하는 것입니다.
스칼라에서 Java 라이브러리 또는 google 준비 문을 사용하여 스칼라 라이브러리를 찾을 수 있습니다. 스칼라가 웹 애플리케이션에서도 사용되기 때문에 그러한 라이브러리가 존재한다고 확신합니다.
from https://stackoverflow.com/questions/41941472/apache-spark-in-sparksql-are-sqls-vulnerable-to-sql-injection by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 서브 디렉토리를 HDFS에 대해 재귀 적으로 나열하려면 어떻게합니까? (0) | 2019.08.05 |
---|---|
[HADOOP] Oozie 4.2에서 워크 플로 오류 로그가 비활성화되었습니다. (0) | 2019.08.05 |
[HADOOP] Sqoop - YARN 대기열에 바인딩 (0) | 2019.08.05 |
[HADOOP] Hadoop SequenceFile에서 쓰기 가능한 완전한 이름 변경 처리 (0) | 2019.08.05 |
[HADOOP] 임베디드 모드에서 스파크 - 사용자 / 하이브 /웨어 하우스를 찾을 수 없음 (0) | 2019.08.05 |