Мне интересно, как 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?
Не могли бы мы немного обсудить это?