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

Jac*_*ter 23 sql scala anorm playframework-2.0

我正在使用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()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

par*_*tic 21

根据它的源代码,Anorm只构建java.sql.PreparedStatements,它可以防止这种SQL注入.(有关一般说明,请参阅PreparedStatement维基百科页面)