在Spark-SQL中避免SQL注入的首选方法是什么(在Hive上)

Dan*_*elM 5 security hive scala apache-spark apache-spark-sql

假设一个SchemaRDD rdd,注册表格customer.您想根据用户输入过滤掉记录.您可能有如何做到这一点的一个想法如下:

rdd.sqlContext.sql(s"SELECT * FROM customer WHERE name='$userInput'")
Run Code Online (Sandbox Code Playgroud)

然而,自PHP的旧时代以来,我们知道这会导致令人讨厌的事情.是否有相当于PreparedStatement?我能找到的唯一与远程相关的东西是org.apache.commons.lang.StringEscapeUtils.escapeSql.

dpe*_*ock 1

一种选择是使用thriftserver 公开 jdbc,然后可以使用常用技术(PreparedStatement 等)来防止 sql 注入。