Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Du 22 au 24 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Struts 2
  3. Règles de sécurité
Extrait - Struts 2 Développez votre application web moderne avec Java
Extraits du livre
Struts 2 Développez votre application web moderne avec Java Revenir à la page d'achat du livre

Règles de sécurité

Généralités

Apache Struts 2 ne fournit pas de mécanisme de sécurité, il s’agit juste d’un framework web.

Apache Struts 2 est un framework open source très répandu dans le monde des applications web. Cependant, Struts 2 est aussi connu pour des défaillances de sécurité ces dernières années. En effet, certains failles techniques ont permis d’exécuter à distance du code malveillant.

Il est essentiel de se tenir informer des différentes vulnérabilités introduites par telles ou telles versions de jar importés dans le projet.

Une importante faille de sécurité a été détectée en septembre 2021 concernant la librairie Apache Log4j 2 qui permettait d’exécuter du code distant, tous les projets utilisant cette version de la librairie comportant la faille ont dû, au plus vite, faire une mise à jour vers une version plus récente.

Vous trouverez, dans la prochaine section quelques conseils à prendre en compte lors du développement d’applications avec Apache Struts 2.

Règles à mettre en œuvre avec Struts 2

1. Protéger l’accès des pages JSP

Il ne faut pas autoriser l’accès direct aux fichiers JSP car cela peut entraîner des failles de sécurité. Pour y parvenir, il faut placer tous vos fichiers JSP sous le dossier WEB-INF. Attention, la plupart des conteneurs JEE restreignent l’accès aux fichiers placés sous le dossier WEB-INF.

Sinon, la deuxième option consiste à ajouter une contrainte de sécurité dans le fichier web.xml comme indiqué ci-dessous :

<!-- Restricts access to pure JSP files - access available  
only via Struts action --> 
<security-constraint> 
    <display-name>No direct JSP access</display-name> 
    <web-resource-collection> 
        <web-resource-name>No-JSP</web-resource-name> 
        <url-pattern>*.jsp</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
        <role-name>no-users</role-name> 
    </auth-constraint> 
</security-constraint> 
 
<security-role> 
    <description>Don't assign users to this role</description> 
    <role-name>no-users</role-name> 
</security-role> 

La meilleure démarche est de mettre en œuvre ces deux solutions.

2. Utiliser Spring Security pour l’authentification

Spring Security a été créé en 2003, il fournit des services permettant de sécuriser des applications JEE.

La sécurité mise en œuvre...

Méthodologie

Nous allons décrire l’implémentation, l’introduction de Spring Security sous Struts 2 afin de mettre en place une couche de sécurité lors de l’authentification à l’application.

Spring Security est un framework de sécurité. Il fournit une authentification et un support d’autorisation afin de sécuriser les applications Spring. Il met à disposition des algorithmes de sécurité performants.

1. Création du projet Struts2SpringSecurity

Nous allons créer un nouveau projet Maven qui va intégrer Spring Security pour l’authentification.

 Cliquez sur New puis allez sur Project.

 Sélectionnez Maven Project, puis cliquez sur Next.

Images/10ET01.PNG

 Sélectionnez Create a simple project (skip archetype selection), puis cliquez sur Next.

Images/10ET02.PNG

 Cliquez sur Next et saisissez les informations concernant le projet ci-dessous :

  • GroupId: Struts2SpringSecurity

  • Artifact Id: Struts2SpringSecurity

  • Packaging: war

 Cliquez sur Finish.

Images/10ET03.PNG

Le projet Struts2SpringSecurity est créé sous Eclipse.

Images/10ET04.PNG

2. Configuration du pom.xml

 Dans le fichier Maven pom.xml, ajoutez les dépendances suivantes :

<project xmlns="http://maven.apache.org/POM/4.0.0" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0  
http://maven.apache.org/maven-v4_0_0.xsd"> 
        <modelVersion>4.0.0</modelVersion> 
        <groupId>Struts2SpringSecurity</groupId> 
        <artifactId>Struts2SpringSecurity</artifactId> 
        <packaging>war</packaging> ...