Voici un premier billet dans la série sur Les bonnes pratiques avec Struts.

Introduction

La sécurité des applications web est un point sensible. En effet, il y a toujours un utilisateur qui essaie de casser la sécurité du système. Ce type d’utilisateur cherche dans le code source des pages HTML des informations sur le chemin des pages JSP. Ensuite, il tente de les exécuter manuellement et de modifier les données du contexte.

Solutions

Pour se prémunir de ce genre d’attaque, il faut interdire l’accès aux pages JSP par les utilisateurs. Deux méthodes sont possibles :

  • la configuration de l’application web
  • l’organisation des pages

Configuration de l’application web

Il faut simplement ajouter les lignes suivantes dans le fichier web.xml :

<security-constraint>
   <web-resource-collection>
     <web-resource-name>no_access</web-resource-name>
     <url-pattern>*.jsp</url-pattern>
   </web-resource-collection>
   <auth-constraint/>
 </security-constraint>

Organisation des pages

Le répertoire WEB-INF n’est pas accessible par les utilisateurs d’une application web. Il suffit donc de placer toutes les pages JSP dans ce répertoire[1]. Ensuite les redirections dans Struts doivent pointer vers /WEB-INF/... au lieu de /....

Conclusion

Je préfère la seconde solution[2] qui autorise plus de souplesse. Vous remarquez que les deux méthodes sont très simples et ne demande que très peu d’effort. Pourtant elles améliorent la sécurité[3] de vos applications web. Alors, n’hésitez pas à sécuriser l’accès de vos pages JSP.

Notes

[1] Par exemple, dans WEB-INF/pages ou WEB-INF/jsp.

[2] C’est également la solution que l’on rencontre le plus.

[3] Également la stabilité.