Мне интересно, как Spring MVC обрабатывает SQL-инъекции (и другие проблемы безопасности: XSS, внедрение кода [javascript] и т. Д.). Я говорю в основном об экранировании значений, которые добавляются в БД и тому подобное. Кажется, я не могу найти никакого ответа, потому что каждый раз, когда я ищу результаты весеннего внедрения SQL, которые включают внедрение зависимости.
Мой поток выглядит следующим образом: из браузера клиента я делаю запрос, состоящий из JSON с некоторыми параметрами запроса (не оператор SQL, который был бы слишком глупым - чтобы сформировать запрос SQL в JS). Когда запрос достигает должным образом аннотированного метода в контроллере, запрос отображается через @RequestBody с использованием Jackson на «объект запроса». Теперь этот объект отправляется в 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?
Не могли бы мы немного поговорить об этом?