Frameworks web

Les frameworks web Java évaluent un langage d'expression issu des données de requête, de l'unified EL de JSP et JSF aux moteurs de framework SpEL, OGNL et MVEL qui atteignent le runtime de l'hôte.

2 min de lecturemis à jour le 13 oct. 2026florianamette1 contributeur
Demander à votre assistant (MCP)Modifier sur GitHub

Les frameworks web Java s'appuient sur des langages d'expression pour déplacer les données entre la requête, le contrôleur et la vue. Un tag de page résout un chemin de propriété, un contrôleur mappe un paramètre de requête sur un graphe d'objets, une annotation nomme une règle à évaluer. Chacun de ces éléments est un moteur d'expression, et lorsque la chaîne qu'il évalue provient des données de requête, la grammaire devient une surface d'exécution à l'intérieur du processus de l'application.

Deux familles apparaissent ici. L'unified EL défini par la pile servlet et partagé par JSP et JSF (${...} en JSP, #{...} en JSF) a été conçu pour lire et écrire des attributs à portée, et à partir d'EL 2.2 il invoque des méthodes, ce qui atteint la réflexion et le runtime de l'hôte. Les moteurs de framework (SpEL dans Spring, OGNL dans Struts2 et l'ancien WebWork, MVEL dans plusieurs couches de binding et de règles) sont des langages objet complets : ils nomment des classes arbitraires, construisent des objets et appellent des méthodes, de sorte que la surface atteignable de base inclut déjà java.lang.Runtime et ProcessBuilder.

Le chemin d'une expression injectée vers l'impact est spécifique au moteur, c'est pourquoi les sous-arbres sont découpés par moteur :

Outils#

  • Burp Suite : Repeater et Intruder pour injecter du SpEL, de l'OGNL, du MVEL et de l'unified EL.
  • J2EEScan : extension Burp avec des contrôles actifs d'injection EL et OGNL.

Références#