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.
Sélectionnez Create a simple project (skip archetype selection), puis cliquez sur Next.
Cliquez sur Next et saisissez les informations concernant le projet ci-dessous :
-
GroupId: Struts2SpringSecurity
-
Artifact Id: Struts2SpringSecurity
-
Packaging: war
Cliquez sur Finish.
Le projet Struts2SpringSecurity est créé sous Eclipse.
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> ...