Доклад на эту тему был представлен на конференции [ZeroNights 0x05][1] на секции FastTrack. Работа оказалась очень актуальной и вызвала большой интерес, поскольку в последнее время проблема эксплуатации HQL-инъекций [интересовала многих security-исследователей, специализирующихся на веб-безопасности][2]. Поэтому я решил написать статью, которая раскрывает дополнительные детали, позволяющие лучше понять результаты работы. Современные приложения, написанные на языке Java, как правило, работают с СУБД не напрямую, а используют Java Persistence API (JPA). JPA – это API, который был добавлен в состав платформ Java SE и Java EE, начиная с Java версии 5, для того, чтобы было удобно сохранять Java-объекты в базу данных и извлекать их из базы данных. Существует большое количество ORM-библиотек (ORM – Object-Relational Mapping) для JAVA, которые реализуют спецификацию JPA. На сегодняшний момент последняя версия спецификации 2.1. Одна из популярных ORM-библиотек — [Hibernate ORM][3]. На данный момент Hibernate является проектом RedHat. Cерверы приложений WildFly и JBoss используют Hibernate в качестве ORM. Hibernate ORM использует объектно-ориентированный язык запросов [Hibernate Query Language (HQL)][4] для написания запросов к сущностям Hibernate, которые хранятся в базе данных. [Читать дальше →][5]
[1]:
http://2015.zeronights.ru/
[2]:
https://twitter.com/Agarri_FR/status/670176931627851776
[3]:
http://hibernate.org/
[4]:
https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html
[5]:
http://habrahabr.ru/post/272589/#habracut