Безопасен ли SimpleJdbcTemplate в Spring от инъекции SQL? - PullRequest
4 голосов
/ 24 октября 2010

Я понимаю, что можно передать вручную созданную строку в execute(String), который уязвим.Однако меня интересует, где вы передаете параметры в запрос, используя MapSqlParameterSource или один из других открытых методов, таких как в приведенных ниже примерах.Копаясь в источнике, похоже, что он использует подготовленное утверждение в каждом из них, поэтому я думаю, что внедрение невозможно.Однако я не эксперт по безопасности, поэтому просто хотел подтвердить.

Пример 1:

getSimpleJdbcTemplate().queryForObject("SELECT * FROM table WHERE value = ?",
                new ObjectMapper(), code);

Пример 2:

    getSimpleJdbcTemplate()
            .update(
                    "insert into table "
                            + "(column1, column2, column3, column4, column5) VALUES "
                            + "(:column1, :column2, :column3, :column4, :column5)",
                    new MapSqlParameterSource().addValue("column1",
                            value1).addValue("column2",
                            value2).addValue("column3",
                            value3).addValue("column4",
                            value4).addValue("column5", value5));

1 Ответ

7 голосов
/ 24 октября 2010

Да, приведенный выше код безопасен для внедрения - он использует привязку параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...