2015-04-16 3 views
5

Nehmen Sie ein SchemaRDD rdd mit einer registrierten Tabelle customer. Sie möchten Datensätze nach einer Benutzereingabe ausfiltern. Eine Idee, die Sie haben könnten, wie dies zu tun, ist die folgende:Was ist der bevorzugte Weg zur Vermeidung von SQL-Injektionen in Spark-SQL (auf Hive)

rdd.sqlContext.sql(s"SELECT * FROM customer WHERE name='$userInput'") 

Da jedoch die alten Zeiten von PHP wir wissen, dass dies zu bösen Dingen führen kann. Gibt es ein Äquivalent von PreparedStatement? Das einzige, was ich finden konnte, das entfernt relevant erschien, ist org.apache.commons.lang.StringEscapeUtils.escapeSql.

+0

Warte ... Also .... SQL-Injektion auf Spark-SQL. Und Spark-sql ist eine Testversion der Implementierung einiger SQL-ähnlicher Funktionen. NICHT ALLE. Wieder waren Dinge wie sql escape ein Teil von PHP und nicht SQL selbst. Auch ... was ist falsch mit der Verwendung von 'org.apache.commons.lang.StringEscapeUtils.escapeSql'. Abgesehen davon - erinnern Sie sich an die "Probe" und "einige" Teil ... Diese maskierten Abfragen sind nicht garantiert, um mit Spark-SQL zu arbeiten. –

+0

Nun ja, es ist eine Teilmenge von SQL, die nicht bedeutet, dass es nicht durch Injektionen ausgenutzt werden kann, die es dem Benutzer beispielsweise ermöglichen, Daten zu sehen, auf die er keinen Zugriff haben sollte. Wenn Sie sich das Dokument von escapeSql ansehen, scheint es, Zeichen '(' => '') zu duplizieren, was nicht der Art ist, wie Zeichenfolgen in spark-sql maskiert werden. Ich denke auch, dass es einen kanonischen Weg geben muss, um das zu erreichen, wonach ich frage. – DanielM

+0

Was ich sage ist ... da selbst die Untergruppe, die sie anstreben, nicht vollständig implementiert ist, konzentrieren sie sich sicherlich nicht darauf, zu entkommen. Daher müssen Sie selbst an der Abfragesanierung arbeiten. –

Antwort

1

Eine Option wäre die Verwendung der thriftserver to expose jdbc, und dann können die üblichen Techniken (PreparedStatement etc.) verwendet werden, um SQL-Injektion zu verhindern.

Verwandte Themen