2012-03-25 12 views
20

¡Estoy usando Play! marco junto con Anorm para acceder a la base de datos. A menudo veo ejemplos como los siguientes donde los miembros del objeto se inyectan en la declaración SQL directamente.¿Scala Anorm String Replacement Sanitize Inputs?

Mi pregunta es, ¿estas entradas están desinfectadas? La mayoría de los ejemplos se ven como 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() 
     } 
    } 
} 

voy a tratar de averiguar a través de la piratería, pero es fácil cometer un error así que pensé pidiendo era más apropiado, y puedo aprovechar la sabiduría de la multitud .

Respuesta

19

De acuerdo con its source code, Anorm construye solo java.sql.PreparedStatements, que previene dicha inyección de SQL. (Véase la página PreparedStatement wikipedia para una explicación general)

+0

Podría usted por favor, actualice su enlace "su código fuente" para https://github.com/playframework/anorm/blob/1384c85434254da8cbd73ac5ba93bf258c04bf12/core/src/main/scala/anorm /SimpleSql.scala#L8-L19? –

Cuestiones relacionadas