Developpez.com

Club des développeurs et IT pro
Plus de 4 millions de visiteurs uniques par mois

Apache Struts : la mise à jour du Framework Java
Corrige des failles exploitées par les hackers

Le , par Cedric Chevalier, Expert éminent sénior
Apache Struts 2.3.15.2 la mise à jour pour le framework open source de création d’applications web en Java est disponible. Celle-ci apporte des correctifs de sécurité majeurs pour des vulnérabilités rencontrées dans la version 2.3.15.1.

A titre de rappel, un récent rapport de sécurité soulignait que les utilisateurs d’Apache Struts avaient tendance à utiliser des versions vulnérables du framework. Struts 2.3.15.1 avait d’ailleurs été recommandé aux utilisateurs afin de les protéger des menaces de sécurité.

Par défaut, la fonctionnalité DMI (Dynamic Method Invocation) est désactivée dans Apache Struts 2.3.15.2. Pour l’équipe de développement, celle-ci constituait une menace de sécurité réelle pour les utilisateurs de la version 2.3.15.1.

On note également que la vulnérabilité de type « Broken Access control » (qui donne la possibilité à un hacker d’avoir accès à certaines ressources alors qu’elles lui sont interdites en temps normal) qui affectait Struts 2.3.15.1 a été aussi corrigée.

Les développeurs tout comme les autres utilisateurs sont vivement appelés à installer cette mise à jour et aussi celles qui la suivront pour éviter toute forme de désagrément.

Télécharger Apache Struts 2.3.15.2

Source : Apache Struts

Et vous ?

Utilisez-vous Apache Struts ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Gugelhupf Gugelhupf - Modérateur http://www.developpez.com
le 25/09/2013 à 21:54
Citation Envoyé par salve34  Voir le message
ps: Voilà une info importante mais comme çà touche la sécurité et non "le pire code ou la pire appli que vous avez vu", personne n'est intéressé

Struts 2 est un framework que j'ai essayé récemment, juste après avoir étudié JSF2 un peu avant.

Dans un premier temps j'ai ressenti un effet "retour en arrière", parce que contrairement à JSF2 qui fonctionne en mode Facelet/ManagedBean, il y a plusieurs fichiers à configurer dans Struts2. Et plus il y a de fichier à configurer dans un projet et plus celui-ci devient lourd à gérer...

Mais d'un autre coté j'ai eu l'impression que malgré ce coté "old-school" il pourrait y avoir plus de souplesse... Et puis au fur et à mesure que je construisais mon interface, je me suis rendu compte que ce framework n'était plus vraiment adapté au développement d'application Web.
La question que j'ai fini par me poser fut : Qu'est ce que Struts2 de base apporte plus que JSP/Servlet à part les formulaires, et avoir des JSP plus propres sans code <% Java %> ? ... rien de plus j'ai l'impression (mais je peux très bien me tromper).

Autrement le framework fonctionne en mode 100% action... comment faire pour qu'une action soit appelé avant le chargement de l'index ?
Malheureusement les forums struts/struts2 sont morts, mais j'ai fini pas trouver la réponse. La solution consiste à rafraichir sa page d'index comme ceci :
Code : Sélectionner tout
<META HTTP-EQUIV="Refresh" CONTENT="1;URL=Index.action">
... C'est fou non ? Pour moi un code source d'une page HTML ne doit pas permettre aux utilisateurs de connaitre le type d'architecture au niveau du serveur. Mais là on sent le struts à plein nez. Comment ne pas se faire pirater ?

Maintenant je vais essayer d'étudier d'autres framework Java orienté Web.
Avatar de Altenide Altenide - Membre habitué http://www.developpez.com
le 26/09/2013 à 9:12
comment faire pour qu'une action soit appelé avant le chargement de l'index ? Malheureusement les forums struts/struts2 sont morts, mais j'ai fini pas trouver la réponse. La solution consiste à rafraichir sa page d'index comme ceci :
Code :
Code : Sélectionner tout
<META HTTP-EQUIV="Refresh" CONTENT="1;URL=Index.action">
... C'est fou non ?

Je ne suis pas sur que ce soit la meilleur façon d'appeler une action struts 2. Cela dénote simplement une profonde méconnaissance du framework en question et du bloc JEE, Servlet, filter. Ce qui est fou s'est d'appliquer la meilleure mauvaise solution trouvée on ne sait ou sur le web. Après que ce soit en Spring, JSf, struts ou autre chose...
Avatar de ulspider ulspider - Membre éprouvé http://www.developpez.com
le 26/09/2013 à 9:49
Salut,

j'ai pas mal développer sous Struts 1/2 et je trouvais ce framework intéressant, enfin à mes débuts. Néanmoins comme le dit Gugelhupf, je ne vois plus bien l'utilité du framework depuis l'arrivée de JSF 2 et supérieur.

D'ailleurs, je peux dire la même chose de Spring. Le couple JSF 2 et JavaEE 6 offre la plupart des fonctionnalités intéressantes de Spring qui manquait jusqu'alors (IOC notamment), sans la lourdeur de Spring. Pour Spring, le seul intérêt que je pourrais y voir c'est pour Spring Security, quoique j'ai testé récemment Apache Shiro et celui-ci répond aussi bien voir mieux à cette problématique.

Le monde JavaEE change, bien que je trouve qu'en entreprise cela ne se fasse pas très rapidement. Je vois énormément de projet String, Struts, Hibernate (pas forcément des anciens projets) mais JSF ne semble pas bien intégré sur le marché français.
Avatar de Gugelhupf Gugelhupf - Modérateur http://www.developpez.com
le 26/09/2013 à 10:38
Citation Envoyé par Altenide  Voir le message
Je ne suis pas sur que ce soit la meilleur façon d'appeler une action struts 2. Cela dénote simplement une profonde méconnaissance du framework en question et du bloc JEE, Servlet, filter. Ce qui est fou s'est d'appliquer la meilleure mauvaise solution trouvée on ne sait ou sur le web. Après que ce soit en Spring, JSf, struts ou autre chose...

Sur les 5 exemples que j'ai trouvé sur le web, concernant le chargement de la page par défaut (l'index), 4 montrent l'exemple que j'ai donné au dessus. Et pourtant c'est une solution proposée par des professionnels.

La seule autre solution que j'ai trouvé est celle-ci (non testé) :
D'abord, créer une page vide welcome dans le web-content.
Ajouter le contenu suivant dans le web.xml :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<!-- web.xml --> 
<filter> 
        <filter-name>action2</filter-name> 
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
</filter> 
<filter-mapping> 
         <filter-name>action2</filter-name> 
         <url-pattern>/*</url-pattern> 
         <dispatcher>REQUEST</dispatcher>     
         <dispatcher>FORWARD</dispatcher> 
         <dispatcher>INCLUDE</dispatcher> 
         <dispatcher>ERROR</dispatcher> 
</filter-mapping> 
 
<welcome-file-list> 
        <welcome-file>welcome</welcome-file> 
</welcome-file-list>
Et enfin dans le web.xml :
Code : Sélectionner tout
1
2
3
4
<!-- struts.xml --> 
<action name="welcome" class="welcome.action"> 
        <result>/index.jsp</result> 
</action>


Je veux bien savoir quelle est la "bonne méthode" à appliquer... sauf que struts/struts2 m'a l'air bien délaissé par la communauté.
Avatar de chortani chortani - Membre régulier http://www.developpez.com
le 26/09/2013 à 10:49
D'ailleurs, je peux dire la même chose de Spring. Le couple JSF 2 et JavaEE 6 offre la plupart des fonctionnalités intéressantes de Spring qui manquait jusqu'alors (IOC notamment), sans la lourdeur de Spring

on disait ça sur les JEE (EJB, serveur ) il y a quelques mois .

Mais troll à part, pour moi, ça dépend du contexte , du besoin et du taille de projet. Je ne ferais pas de JSF pour une petite appli web de quelques pages (actions), et pas de Struts dans une application de gestion de .... .

et franchement Struts ça reste mieux que JSP/Servlet ( je suis sur une JSP de 2000 lignes de code ).
Avatar de Gugelhupf Gugelhupf - Modérateur http://www.developpez.com
le 26/09/2013 à 11:01
Citation Envoyé par chortani  Voir le message
et franchement Struts ça reste mieux que JSP/Servlet ( je suis sur une JSP de 2000 lignes de code ).

Oui mais non, tu prends un cas personnel qui est extrême.
Dans un premier temps, enlèves toutes les balises de code Java <% %> dans la .jsp en question, et dit nous combien il reste de lignes.

Ce n'est pas parce que tu travailles en JSP/Servlet que tu as 2000 lignes dans une .jsp

La personne qui a fait ce travail de cochon peut très bien te reproduire la même chose avec une .jsp de 2000 lignes pour struts/struts2.
Avatar de Traroth2 Traroth2 - Expert éminent http://www.developpez.com
le 26/09/2013 à 11:20
Citation Envoyé par DrHelmut  Voir le message
Indépendament des failles je trouve fou qu'en 2013 on parle encore de struts2 comme si cela pouvait être un choix cohérent de framework web....

C'est lourd et poussif. Et JSF ne fait pas mieux, à croire que le monde Java ne sait pas faire de web de manière simple, élégante et efficace; pour ma part après GWT j'en suis revenu aujourd'hui aux fondamentaux : frontal web pur html/Jquery, services REST en java pour la partie traitement; et basta.

Ca se défend, ce que tu dis, très franchement. Tu rends ta partie serveur totalement indépendante de ta partie client, et ça, c'est déjà un avantage énorme.
Avatar de chortani chortani - Membre régulier http://www.developpez.com
le 26/09/2013 à 11:22
Oui c’était juste un exemple, et t'as raison sur ce point. Mais je pense que c'est plus simple de faire un code in-maintenable avec jsp/servlet qu'avec struts. Avec Struts tu sépare les modelés (form ) l'action , la validation ,les tags,etc ...

Ayant travailler bcp avec jsp/servlet, je me rend compte avec le temps que je commence à implémenter les fonctionnalité d'un Framework MVC( struts,springmvc ou autre) mais en moins bien ( test, doc, communauté ). donc c'est pour ça que j'ai dit

et franchement Struts ça reste mieux que JSP/Servlet

Avatar de Gugelhupf Gugelhupf - Modérateur http://www.developpez.com
le 26/09/2013 à 11:51
Citation Envoyé par chortani  Voir le message
Ayant travailler bcp avec jsp/servlet, je me rend compte avec le temps que je commence à implémenter les fonctionnalité d'un Framework MVC

Si on te forme un minimum, tu sauras qu'il ne faut surtout pas :
  • faire de System.out.println() dans une Servlet
  • faire du code Java dans une .jsp avec les balises <% %>


Partant de ce constat, JSP/Servlet peut être utilisé en mode MVC :
  • Les contrôleurs : Les Servlets
  • Les vues : les .jsp avec utilisation des EL (Expression Language)
  • Les modèles : ton code métier utilisé dans les contrôleurs


Struts/Struts2 de base c'est juste du JSP/Servlet avec des contraintes.
Avatar de Altenide Altenide - Membre habitué http://www.developpez.com
le 26/09/2013 à 12:00
pour booter ton appli plutôt çà en effet

Code : Sélectionner tout
1
2
3
4
 
<welcome-file-list> 
<welcome-file>index.action</welcome-file> 
</welcome-file-list>

ou tu fait un filter ad hoc spécifique.

voir dans le pire des cas tu gèle ton index.jsp

avec un
Code : Sélectionner tout
 <% response.sendRedirect("index.action") %>
(pas très beau)

mais j'en conviens pour utiliser des achitecture Spring, Hibernate, Stuts 2, mvc 2 , avec un domainService, la security, l'aop et tout le bazar cà fait de grosses machines a gaz ultra verbeuses.

Après tous dépends des projets.

Il me semble qu'en php symphony et les autres framework c'est pas beaucoup mieux voir pire d'après certains retour que j'ai eu.
Avatar de chortani chortani - Membre régulier http://www.developpez.com
le 26/09/2013 à 12:02
Si on te forme un minimum, tu sauras qu'il ne faut surtout pas :

faire de System.out.println() dans une Servlet
faire du code Java dans une .jsp avec les balises <% %>

merci pour le conseille. sauf que je suis bien formé mais je fais que de la maintenance de code . donc ce n'est pas moi qui a fais le code. et pour changer une centaine de jsp servlet comme tu dis, je te communique le mail de mon chef je te laisse voir avec lui .

Struts/Struts2 de base c'est juste du JSP/Servlet avec des contraintes.

Tous les framework web java se base sur jsp/ servlet ( à part Play ). et si je suis ton logique il faut rester sur des jsp/servlet c'est ça .
Avatar de Altenide Altenide - Membre habitué http://www.developpez.com
le 26/09/2013 à 12:05
voici une 2 stats intéressantes :

insight strus 2 / jsf 2

http://zeroturnaround.com/rebellabs/...ts-and-jsf/#!/

mais Struts 2 sauf évolution majeure a un futur plutôt sombre selon moi.
Avatar de Gugelhupf Gugelhupf - Modérateur http://www.developpez.com
le 26/09/2013 à 13:11
Les statistiques sont intéressantes en effet.
Moi j'y vois surtout une monté fulgurante de struts2 en 2007 (à sa sorti), puis une décroissance.
JSF2 une faible croissance à sorti début mi 2009, mais pas vraiment de décroissance.
Personnellement, lorsque je regarde ces statistiques, je ne fais pas trop attention à l'Inde ou la Chine, où tu n'as que du Struts en masse, vu les conditions actuelles, je dirais plus qu'ils font de la maintenance ou de la migration d'anciennes applications.

Et puis ce n'est pas parce que Struts est très recherché sur le web que c'est un bon framework, la preuve je n'ai pas arrêté de faire des recherches sur ce framework pour essayer de comprendre la différence entre l'implémentation SessionAware (et son fonctionnement) et ActionContext.getContext().getSession() pour les sessions...
Ou bien encore pour l'internationalisation, faut-t-il appeler ses fichiers global_FR.properties, messages_FR.properties ou package_FR.properties ? ....

Pour ce qui est de Symfony2, c'est un framework que j'ai essayé et que j'ai bien apprécié, je n'ai pas rencontré de grandes difficultés car celui-ci est bien documenté. Les seuls avis négatifs que j'ai lu sur ce framework viennent des développeurs Python qui préfèrent Django parce qu'il y a moins de fichiers à gérer, et moins de lignes de code qu'avec Symfony.
Avatar de ymajoros ymajoros - Membre habitué http://www.developpez.com
le 27/09/2013 à 10:47
Ça fera peut-être tarte à la crème, mais pourquoi choisir un framework qui n'a pas de spécification derrière, alors que la couche web standard de la stack Java EE, JSF, fait 100 fois mieux ?

Je peux comprendre qu'on s'en écarte si c'est pour un mieux, mais si c'est pour faire un gros retour en arrière (approche request/response vs composants) sans plus-value (ne fait rien qu'on ne peut faire facilement en jsf), n'avoir qu'une seule implémentation, aucune référence... À quoi bon ?
Avatar de Traroth2 Traroth2 - Expert éminent http://www.developpez.com
le 16/10/2013 à 13:14
Citation Envoyé par Altenide  Voir le message
voici une 2 stats intéressantes :

insight strus 2 / jsf 2

http://zeroturnaround.com/rebellabs/...ts-and-jsf/#!/

mais Struts 2 sauf évolution majeure a un futur plutôt sombre selon moi.

Sympa, le comparatif entre les frameworks web Java. Ca fait un moment que je cherchais un truc de ce genre. Merci !
Offres d'emploi IT
Lead développeur back-end
Paris&Co Incubateurs - Ile de France - Paris (75000)
Auditeur test d'intrusion (h/f)
Atos - Ile de France - Les Clayes-sous-Bois (78340)
Chef de projet technique dématérialisation h/f
APSIT - Ile de France - Boulogne-Billancourt (92100)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil