Замена строки Scala Anorm очищает входные данные?

Я использую Play! framework вместе с 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()
        }
    }
}

Я попытаюсь выяснить это путем взлома, но ошибиться легко, поэтому я подумал, что спросить было бы более уместно, и я могу воспользоваться мудростью толпы.


person Jacob Groundwater    schedule 25.03.2012    source источник


Ответы (1)


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

person paradigmatic    schedule 25.03.2012
comment
Не могли бы вы обновить ссылку на исходный код на github.com/playframework/anorm/blob/? - person Kevin Meredith; 07.07.2016