Заменяет ли замена строки Scala Anorm входы? - PullRequest
22 голосов
/ 25 марта 2012

Я использую 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 Ответ

21 голосов
/ 25 марта 2012

Согласно исходному коду , Anorm создает только java.sql.PreparedStatements, что предотвращает такое внедрение SQL. (см. страницу PreparedStatement wikipedia для общего объяснения)

...