SQL-инъекция возможны атаки в JPA?

Я создаю веб-приложение на Java, используя Java EE 6 и JSF-2.0, используя постоянный API для всех операций с базой данных.

Серверная часть - это MySQL. , но я использовал функции EntityManager и именованные запросы в EJB-QL для всех операций. Возможны ли в этом случае атаки SQL-инъекций?

40
задан Martijn Pieters 17 November 2017 в 08:49
поделиться

3 ответа

Это возможно, только если вы вставляете переменные, управляемые пользователем, в строку SQL/JPQL, как например:

String sql = "SELECT u FROM User u WHERE id=" + id;

Если вы этого не делаете и используете только параметризованные/именованные запросы, то вы в безопасности.

42
ответ дан 27 November 2019 в 01:46
поделиться

Если ваш JPA-провайдер обрабатывает все входные аргументы, чтобы справиться с атаками инъекций, то вы должны быть защищены. Мы делаем тонкую обработку в EclipseLink.

Как уже упоминалось в предыдущем посте, составление собственного JPQL или SQL (для собственных запросов) может вас подставить.

Я бы рекомендовал использовать именованные запросы с параметрами, а не конкатенацию строк для создания JPQL/SQL.

Doug

5
ответ дан 27 November 2019 в 01:46
поделиться

Да, это возможно. Это зависит от способа реализации.
Предотвращение инъекций в языке запросов JPA

11
ответ дан 27 November 2019 в 01:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: