Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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 [ править ]

Проблемы безопасности 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

Ссылки [ править ]

  1. ^ "ognl.org" , OGNL Technology, Inc , заархивировано из оригинала 25 октября 2008 г. , извлечено 5 ноября 2013 г. CS1 maint: discouraged parameter (link)
  2. ^ «OpenSymphony, RIP (2000 - 2011)» . Открытая симфония . Архивировано из оригинального 5 сентября 2013 года . Проверено 1 июня 2011 года . CS1 maint: discouraged parameter (link)
  3. ^ «Apache Struts: Список уязвимостей безопасности» . cvedetails.com . Проверено 2 октября 2017 года . CS1 maint: discouraged parameter (link)
  4. ^ "Выпуски Apache Struts" . struts.apache.org . Проверено 2 октября 2017 года . CS1 maint: discouraged parameter (link)
  5. ^ Goodin, Dan (9 марта 2017). «Критическая уязвимость при« массированной »атаке ставит под угрозу высокоэффективные сайты [Обновлено]» . Ars Technica . Проверено 2 октября 2017 года . CS1 maint: discouraged parameter (link)