Vous êtes ici

  1. Accueil
  2. Génie logiciel appliqué

Génie logiciel appliqué

Génie logiciel appliqué

En pratique :

Langue principale : français
Nombre de crédits européens : 3
Capacité d'accueil : 20

Description du contenu de l'enseignement

Le cours est structure en 6 parties, qui traitent toutes un aspect différent. Cours 1 : HTTP et les servlets. Ce cours analyse les fondamentaux du protocole HTTP et d'un serveur d'application. Les problématiques de sécurité abordées sont principalement la propriété stateless du protocole HTTP et comment une navigation à états est émulée par le serveur d'application grâce au jeton de session. Les détails d'implémentation d'une servlet, ainsi que de l'utilisation des sessions en Java sont vus en détail. Cours 2 : Authentification et contrôle d'accès. Ce cours traite du fonctionnement de l'authentification applicative, des problématiques de stockage sécurisé des identifiants de connexion, et de la mise en place d'un contrôle d'accès de type RBAC. Les attaques sur les hashs de mots de passe sont passées en revue, notamment les rainbow tables. Les mécanismes de filtres applicatifs en Java et leurs configurations, ainsi que leur utilisation pour la mise en place d'un contrôle d'accès centralisé sont également abordées. Cours 3 : Sécurité des interfaces. Ce cours aborde les problématiques de la sécurité des interfaces, et des attaques visant les clients d'une application web. Le Cross-Site Scripting et le Cross-Site Request Forgery sont analysés en profondeur et des solutions d'implémentation sécurisée sont vues en cours Cours 4 : Gestion des fichiers. Ce cours traite de la manipulation des fichiers au sein d'une application web, et des dangers inhérents. En particulier, les accès arbitraires au système de fichiers, ainsi que les inclusions de fichier locales ou distantes, et les envois de fichiers non contrôlés sont analysés. Les bonnes pratiques pour manipuler des fichiers en Java sont abordées en cours. Cours 5 : Injections SQL. Ce cours analyse en profondeur l'un des principaux problèmes de sécurité affectant les applications web : les injections SQL. Ces attaques sont vues en profondeur : leur typologie (UNION Based, Boolean Based, Time Based), leurs méthodes d'exploitation respectives et les dangers qu'elles représentent. Des exploitations un peu plus sophistiquées sont abordées, notamment avec la création d'un exécutable malveillant sur le serveur. Cours 6 : Gestion des bases de données. Ce cours fait suite au précédent et aborde les différentes méthodes pour interfacer une application web avec une base de données de façon sécurisée (sans craindre les injections SQL). Différentes solutions sont proposées, et des précisions particulières sont apportées en ce qui concerne les ORM, et l'utilisation et la configuration de Hibernate sont vues en cours. A côté de ces cours magistraux, 9 séances de TP permettent aux étudiants de développer un forum de discussion en Java/J2EE, dont la notation concerne en grande partie la sécurité.  


Compétences à acquérir

L'objectif du module de GLAR est d'appréhender le modèle de sécurité des applications web et de connaître les bonnes pratiques à appliquer pour développer une application robuste. L'angle d'attaque choisi prend en compte l'aspect défensif et l'aspect offensif, dans l'optique de comprendre les attaques, et les méthodologies des attaquants pour pouvoir se défendre efficacement. Le côté défensif est abordé en détaillant les fondamentaux du fonctionnement d'une application web en Java, en termes de développement de classes Java et de configuration du serveur, puis en passant en revue l'implémentation des différents mécanismes applicatifs structurant sur le plan de la sécurité. A la fin de ce module, les étudiants doivent avoir compris le fonctionnement d'une application web, en particulier dans l'écosystème Java, avec les appels aux serveur HTTP, les différents contrôleurs et les flux de communications qui permettent à l'utilisateur de naviguer sur Internet. Au sein de ces éléments, ils doivent connaître les risques inhérents et la bonne manière de proposer une implémentation robuste.


Modalités d’organisation et de suivi

Examen terminal et TP


Pré-requis

Pré-requis obligatoires

Bonne pratique de la programmation en Java


Profils attendus

Bonne pratique de la programmation en Java