Разработчики) | Технология OGNL |
---|---|
Стабильный выпуск | 3.0.8 / 24 сентября 2013 г. |
Написано в | Ява |
Операционная система | Кроссплатформенность |
Платформа | Виртуальная машина Java |
Тип | Язык выражений (EL) |
Лицензия | Лицензия BSD |
Веб-сайт | http://commons.apache.org/ognl/ |
Object-Graph Navigation Language (OGNL) - это язык выражений с открытым исходным кодом (EL) для Java , который, хотя и использует более простые выражения, чем весь спектр поддерживаемых языком Java, позволяет получать и устанавливать свойства (через определенные setProperty и getProperty методы, найденные в JavaBeans ), и выполнение методов классов Java. Это также позволяет упростить манипуляции с массивами.
Он предназначен для использования в приложениях Java EE с библиотеками тегов в качестве языка выражений.
OGNL был создан Люком Бланшардом и Дрю Дэвидсоном из OGNL Technology . [1] Разработка OGNL была продолжена OpenSymphony , которая закрылась в 2011 году. [2] OGNL сейчас разрабатывается как часть Apache Commons .
Технология OGNL [ править ]
OGNL возник как способ сопоставления ассоциаций между интерфейсными компонентами и внутренними объектами с использованием имен свойств. По мере того, как эти ассоциации собирали больше возможностей, Дрю Дэвидсон создал язык кодирования ключевых значений (KVCL). Затем Люк Бланшард повторно реализовал KVCL с помощью ANTLR и начал использовать имя OGNL. Технология была снова реализована с использованием компилятора Java Compiler Compiler ( JavaCC ).
OGNL использует отражение и самоанализ Java для обращения к графу объектов исполняемого приложения. Это позволяет программе изменять поведение в зависимости от состояния графа объекта вместо того, чтобы полагаться на настройки времени компиляции. Он также позволяет вносить изменения в граф объекта.
Проекты, использующие OGNL [ править ]
- WebWork и его преемник Struts 2
- Гобелен (4 и ранее)
- Spring Web Flow
- Apache Click
- MyBatis - фреймворк для сопоставления SQL
- Thymeleaf - Java , XML / XHTML / HTML5 шаблон двигателя
- FreeMarker - шаблонизатор Java
Проблемы безопасности OGNL [ править ]
Благодаря своей способности создавать или изменять исполняемый код, OGNL способен вносить критические недостатки безопасности в любую платформу, которая его использует. [ необходима цитата ] Несколько версий Apache Struts 2 были уязвимы для недостатков безопасности OGNL. [3] По состоянию на октябрь 2017 г. рекомендуемая версия Struts 2 - 2.5.13. [4] Пользователям настоятельно рекомендуется выполнить обновление до последней версии, поскольку в более старых версиях были задокументированы уязвимости системы безопасности - например, Struts 2 версий 2.3.5–2.3.31 и 2.5–2.5.10 позволяет удаленным злоумышленникам выполнять произвольный код . [5]
См. Также [ править ]
- МВЭЛ
Внешние ссылки [ править ]
- Ветка обслуживания OGNL 3.x
- Домашняя страница OGNL 4.x (Apache)
- Уязвимость Apache Struts CVE-2013-2134, связанная с внедрением экспрессии OGNL
Ссылки [ править ]
- ^ "ognl.org" , OGNL Technology, Inc , заархивировано из оригинала 25 октября 2008 г. , извлечено 5 ноября 2013 г. CS1 maint: discouraged parameter (link)
- ^ «OpenSymphony, RIP (2000 - 2011)» . Открытая симфония . Архивировано из оригинального 5 сентября 2013 года . Проверено 1 июня 2011 года . CS1 maint: discouraged parameter (link)
- ^ «Apache Struts: Список уязвимостей безопасности» . cvedetails.com . Проверено 2 октября 2017 года . CS1 maint: discouraged parameter (link)
- ^ "Выпуски Apache Struts" . struts.apache.org . Проверено 2 октября 2017 года . CS1 maint: discouraged parameter (link)
- ^ Goodin, Dan (9 марта 2017). «Критическая уязвимость при« массированной »атаке ставит под угрозу высокоэффективные сайты [Обновлено]» . Ars Technica . Проверено 2 октября 2017 года . CS1 maint: discouraged parameter (link)