sql - ¿El reemplazo de cadena Scala Anorm desinfecta las entradas?
playframework-2.0 (1)
De acuerdo con su código fuente , Anorm construye solo java.sql.PreparedStatements
, que impiden dicha inyección de SQL. (vea la página de Wikipedia de PreparedStatement para una explicación general)
Estoy usando el juego! Marco junto con Anorm para acceder a la base de datos. A menudo veo ejemplos como los siguientes donde los miembros de objetos se inyectan directamente en la declaración SQL.
Mi pregunta es, ¿están saneadas estas entradas? La mayoría de los ejemplos se parecen a los siguientes:
object Person {
def save(p:Person) {
DB.withConnection ("default") { implicit connection =>
SQL("""
INSERT INTO person(firstName,lastName)
values ({firstName}, {lastName})
"""
).on(
"firstName" -> p.firstName,
"lastName" -> p.lastName
).executeUpdate()
}
}
}
Intentaré descubrirlo a través de la piratería, pero es fácil cometer un error, así que pensé que preguntar era más apropiado y puedo aprovechar la sabiduría de la multitud.