Предотвращение SQL-инъекций Spring (MVC)?

Мне интересно, как Spring MVC обрабатывает SQL-инъекции (и другие проблемы безопасности: XSS, внедрение кода [javascript] и т. Д.). Я говорю в основном об экранировании значений, которые добавляются в БД и тому подобное. Кажется, я не могу найти никакого ответа, потому что каждый раз, когда я ищу результаты Spring sql-инъекции, которые связаны с инъекцией зависимостей, возникают.

Мой поток выглядит следующим образом: из клиентского браузера я делаю запрос, состоящий из JSON с некоторыми параметрами запроса (не SQL-запрос, это было бы слишком глупо - формировать SQL-запрос на JS). Когда запрос достигает должным образом аннотированного метода в Контроллере, запрос отображается через @RequestBody с помощью Джексона на «объект запроса». Теперь этот объект отправляется в DAO, где с помощью шаблона JDBC я запрашиваю базу данных (и с помощью RowMapper я сопоставляю результаты).

В DAO у меня есть что-то вроде:

public int countAll(RequestObject request) {
    String sql = "SELECT count(*) FROM employees WHERE name = '" + request.getName() + "'";

    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
    int count = jdbcTemplate.queryForInt(sql);

    return count;
}

Безопасен ли этот подход от внедрения SQL? Безопасны ли запросы, не основанные на JDBCTemplate, учитывая, что они проходят через Spring MVC?

Не могли бы мы немного обсудить это?

10
задан BogdanSorlea 12 December 2011 в 10:03
поделиться