Scala Anorm字符串替换是否会消除输入?

时间:2012-03-25 00:28:58

标签: sql scala playframework-2.0 anorm

我正在使用Play!框架以及Anorm访问数据库。我经常看到如下例子,其中对象成员直接注入到SQL语句中。

我的问题是,这些投入是否已消毒?大多数示例如下所示:

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()
        }
    }
}

我会试图通过黑客行为找出答案,但很容易犯错,所以我觉得要求更合适,我可以借鉴人群的智慧。

1 个答案:

答案 0 :(得分:21)

根据its source code,Anorm仅构建java.sql.PreparedStatements,这会阻止此类SQL注入。 (有关一般说明,请参阅PreparedStatement wikipedia页面)