Подтвердить что ты не робот

Предоставляет ли Spring JDBC защиту от атак SQL-инъекций?

Spring JdbcTemplate абстракция предоставляет множество функций, но может ли она использоваться таким образом, чтобы обеспечить защиту от SQL-инъекции атаки?

Например, как и защита, вы можете использовать PreparedStatement с правильно определенной параметризацией.

4b9b3361

Ответ 1

Это, безусловно, делает. Этот пример прямо из документов Spring 3.0 (но тот же в 2. *):

String lastName = this.jdbcTemplate.queryForObject( 
        "select last_name from t_actor where id = ?", 
        String.class, 1212L); 

Как вы можете видеть, он сильно поддерживает подготовленные заявления (которые он должен использовать за кулисами для вас): вы указываете параметры с помощью заполнителей (?) и поставляете массив объектов для заполнения параметров. (Последний параметр - тип ожидаемого результата, но это не очень важно для этого вопроса.)

Вы также можете использовать NamedParameterJdbcTemplate и указать параметры в Map, который, возможно, менее эффективен, но определенно более мнемонический.