Desarrollador (es) | Tecnología OGNL |
---|---|
Lanzamiento estable | 3.0.8 / 24 de septiembre de 2013 |
Escrito en | Java |
Sistema operativo | Multiplataforma |
Plataforma | máquina virtual de Java |
Escribe | Lenguaje de expresión (EL) |
Licencia | Licencia BSD |
Sitio web | http://commons.apache.org/ognl/ |
Object-Graph Navigation Language (OGNL) es un lenguaje de expresión (EL) de código abierto para Java que, si bien utiliza expresiones más simples que la gama completa de las que admite el lenguaje Java, permite obtener y establecer propiedades (a través de setProperty definido y getProperty métodos, que se encuentran en JavaBeans ), y la ejecución de métodos de clases Java. También permite una manipulación de matrices más sencilla.
Está destinado a ser utilizado en aplicaciones Java EE con taglibs como lenguaje de expresión.
OGNL fue creado por Luke Blanshard y Drew Davidson de OGNL Technology . [1] El desarrollo de OGNL fue continuado por OpenSymphony , que cerró en 2011. [2] OGNL se desarrolla ahora como parte de Apache Commons .
OGNL comenzó como una forma de mapear asociaciones entre componentes de front-end y objetos de back-end usando nombres de propiedad. A medida que estas asociaciones reunieron más funciones, Drew Davidson creó el lenguaje de codificación de valores clave (KVCL). Luke Blanshard volvió a implementar KVCL usando ANTLR y comenzó a usar el nombre OGNL. La tecnología se volvió a implementar nuevamente utilizando el compilador de compiladores de Java ( JavaCC ).
OGNL utiliza la reflexión e introspección de Java para abordar el gráfico de objetos de la aplicación en tiempo de ejecución. Esto permite que el programa cambie el comportamiento según el estado del gráfico del objeto en lugar de depender de la configuración del tiempo de compilación. También permite cambios en el gráfico de objetos.
Debido a su capacidad para crear o cambiar código ejecutable, OGNL es capaz de introducir fallas de seguridad críticas en cualquier marco que lo utilice. [ cita requerida ] Varias versiones de Apache Struts 2 han sido vulnerables a fallas de seguridad de OGNL. [3] A partir de octubre de 2017, la versión recomendada de Struts 2 es 2.5.13. [4] Se insta a los usuarios a actualizar a la última versión, ya que las revisiones anteriores tienen vulnerabilidades de seguridad documentadas; por ejemplo, las versiones 2.3.5 a 2.3.31 y 2.5 a 2.5.10 de Struts 2 permiten que atacantes remotos ejecuten código arbitrario . [5]Atlassian Confluence se ha visto afectado por un problema de seguridad OGNL que permitía la ejecución de código remoto arbitrario y requería que todos los usuarios se actualizaran. [6]