这个问题在这里已经有了答案:
spark sql安全注意事项(1个答案)
三年前关门了。
脚本:
假设配置单元中有一个表,并使用apachespark中的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()
................
...............
}
2条答案
按热度按时间bttbmeg01#
您可以在spark 2.0中尝试以下操作:
}`
7fhtutme2#
在java中,处理sql注入威胁最常用的方法是使用准备好的语句。
您可以使用scala中的java库或google准备的语句来查找scala库。由于scala也用于web应用程序,我确信这样的库是存在的。。