Cours-Gratuit
  • Accueil
  • Blog
  • Cours informatique
home icon Cours gratuits » Cours informatique » Cours programmation » Cours JAVA » Cours Framework JAVA

Tutoriel sur la sécurité des applications Web JAVA avec Apache Shiro [Eng]

Tutoriel sur la sécurité des applications Web JAVA avec Apache Shiro [Eng]
Participez au vote ☆☆☆☆☆★★★★★

Tutoriel sur la sécurité des applications Web JAVA avec Apache Shiro

.. ... ...

  1. Introduction

De nos jours, les applications Web sont en train de devenir l’un des outils de base indispensables pour les entreprises, mais aussi la principale source de violations de données. Les violations de la sécurité peuvent offrir aux attaquants de bonnes occasions de voler des données précieuses, telles que des informations sur les clients, d'exposer des enregistrements sensibles ou d'approfondir le réseau de l'entreprise pour atteindre des ressources internes et plus, ce qui peut éventuellement nuire à la réputation de l'entreprise.

Toute entreprise qui traite des informations sensibles peut être la cible d'infractions de sécurité à tout moment de ses activités quotidiennes. Les entreprises implémentent généralement de nombreux systèmes de défense sophistiqués, tels que des pare-feu et un cryptage SSL (Secure Sockets Layer), dans leurs applications Web, ce qui est utile pour protéger l'accès aux applications, mais cela ne bloquera pas complètement toutes les atteintes à la sécurité.

Les gens associent souvent les atteintes à la sécurité à des événements isolés, allant du piratage de sites Web au vol d’informations, mais en réalité, les atteintes à la sécurité couvrent une gamme plus étendue de données d’une entreprise, couvrant tout type de biens de l’entreprise. Bien que les vulnérabilités de sécurité puissent affecter toute entreprise en termes de pertes financières et de données, des mesures de sécurité stratégiques et des applications sécurisées peuvent être prises pour éliminer les attaques potentielles, réduire les risques inattendus, aider les entreprises à conserver la confiance de leurs clients et garantir des revenus.

La sécurité des applications est un processus qui commence par le cycle de vie du développement des applications pour s'assurer que la meilleure sécurité possible est appliquée à chacune des étapes du processus de développement, y compris le matériel sur lequel l'application peut s'exécuter ou la sécurisation du réseau sur lequel l'application peut utiliser pour authentifier et autoriser les utilisateurs. Les logiciels de planification conçus dans l'optique de la sécurité des applications dès la conception initiale conduisent à des logiciels présentant moins de problèmes de sécurité et moins de risques de vulnérabilités. Toutefois, cela ne signifie pas que les applications conçues dans un souci de sécurité garantiront la sécurité des logiciels. Cela signifie que moins de défauts seront identifiés pendant les phases de développement, de test et de production, et que moins de défauts liés à l’application entière sont susceptibles d’être trouvés.

Cette thèse examine en détail Apache Shiro, un framework de sécurité Java qui peut être facilement intégré à n’importe quelle application Java en tant que solution de sécurité. L’objectif est que le résultat de cette thèse soit un prototype d’application Web Java intégrant Apache Shiro comme cadre de sécurité.

1.1 Objectif, portée et structure de la thèse

La thèse se fixe comme objectif d’étudier l’intégration d’Apache Shiro dans une application Web Java, nécessitant la gestion et l’authentification de plusieurs rôles d’utilisateur via des identifiants stockés dans une base de données.

Un aperçu de l’architecture d’Apache Shiro est inclus dans le cadre de la recherche, ainsi qu’une analyse plus approfondie de son cœur et de son support Web. Des exemples techniques et des instantanés de code sont inclus pour vous aider lors de la lecture de la thèse. Au moment de la rédaction de cette thèse, Apache Shiro 1.2.3 était la version officielle stable disponible. Il s'agit donc de la version utilisée pour l'analyse de la structure, les instantanés de code et les exemples. Cette thèse n'est pas un guide ni un tutoriel pour le développement d'applications Web entièrement en Java. Aucun autre langage de programmation que Java n'est couvert.

La thèse est écrite en sept sections. La section 1 décrit la société de cas et l'objet de cette étude. La section 2 passe en revue le contexte théorique et le contexte de cette thèse. Les sections 3, 4 et 5 traitent des concepts et des caractéristiques du cadre actuel à étudier. La section 6 présente les résultats de l'étude sous la forme d'un prototype pour la proposition de projet. La section 7 présente une évaluation et un résumé de l’étude, ainsi que les étapes futures de la recherche et du développement. La section 8 résume cette thèse avec des conclusions.

1.2 Contexte de l'entreprise et du projet

Northscreen est une société finlandaise spécialisée dans les solutions de surveillance de l'état des routes grâce à une solution appelée ArcticView. Actuellement, Northscreen développe une application Web Java qui sera utilisée à des fins de gestion interne. En raison de l’importance des données à gérer, la société exige l’intégration d’un cadre de sécurité pour sécuriser cette application. Ce cadre est Apache Shiro et son choix s’explique par le fait que ce cadre est déjà utilisé par la société dans les autres solutions qu’il propose. De cette façon, l'expertise de la société est réutilisée et améliorée en fonction des autres exigences requises pour ce projet.

Cette nouvelle application nécessite une utilisation plus étendue et plus avancée d’Apache Shiro par rapport à la façon dont la société l’utilise actuellement comme cadre de sécurité de ses applications, ce qui nécessite une compréhension plus profonde et une analyse plus technique de cet outil pour une intégration réussie.

Deux conditions principales sont nécessaires pour une intégration réussie d’Apache Shiro dans ce nouveau projet.

  1. a) Gestion de plusieurs rôles d'utilisateurs

Un rôle, comme expliqué plus en détail au chapitre 4 (section 2), est simplement un titre qui définit un niveau d'autorité pour l'utilisateur. Le rôle déterminera les actions qu'un utilisateur peut et ne peut pas exécuter dans l'application. Dans ce cas, Northscreen a besoin de deux rôles de gestion, un utilisateur normal et un utilisateur administrateur. En accord avec l'entreprise, les deux utilisateurs pourront exécuter n'importe quelle action de l'application à la seule exception de la gestion des utilisateurs. La gestion des utilisateurs est la fonctionnalité de l'application qui permet de créer, de modifier ou de supprimer des utilisateurs du système. Dans ce cas, cette fonctionnalité est autorisée uniquement pour les utilisateurs administrateurs.

  1. b) Authentification à l'aide d'informations d'identification stockées dans une base de données

Comme convenu avec l'entreprise, les informations d'identification de l'utilisateur seront stockées dans une base de données relationnelle à laquelle l'utilisateur accédera lorsqu'il voudra se connecter au système. Les informations d'identification stockées dans la base de données incluent à la fois l'ID utilisateur et le mot de passe. Pour des raisons de sécurité, le mot de passe sera crypté à l'aide de l'algorithme de hachage SHA-256. La cryptographie et les meilleures pratiques pour le stockage des données d'identification sont traitées en détail plus loin dans le chapitre 4 (section 4).

Question de recherche

Comment intégrer Apache Shiro en tant que cadre de sécurité pour une application Web Java, permettant la gestion de plusieurs rôles d’utilisateur et l’authentification via des informations d’identité stockées dans une base de données.

  1. Sécurité en Java

L’utilisation du framework de sécurité Java est l’objet principal de cette thèse; il semble donc nécessaire de définir ce que la sécurité signifie dans le contexte Java.

Oaks (2001) explique comment Java a attiré l’attention des programmeurs du monde entier lors de sa première publication, et comment certains de ces développeurs ont été attirés par les fonctionnalités de sécurité développées par Java. Cependant, la phrase «Java is secure» a apporté à ces développeurs certaines attentes qui n'étaient pas nécessairement partagées par les concepteurs de Java lui-même [1].

En fonction des attentes, Oaks (2001) définit différents sens au terme «sécurité» s’appliquant à une application Java, notamment:

  • authentifié

L'identité des utilisateurs impliqués dans l'application doit être vérifiée.

  • crypté

Les données que l'application peut envoyer et / ou recevoir, sur le réseau ou via un magasin persistant, tel qu'un système de fichiers ou une base de données, doivent toujours être cryptées.

  • audité

Toutes les opérations potentiellement sensibles doivent toujours être consignées.

  • bien défini

Une spécification de sécurité bien définie doit être suivie.

  • vérifié

Les règles de fonctionnement doivent être définies et vérifiées. [1, 2]

Ce sont des fonctionnalités importantes qui peuvent aujourd'hui être reconnues et comprises par tout développeur Java moderne, du fait que la technologie a considérablement évolué depuis la première version de Java.

Néanmoins, il est important de mentionner que le modèle de sécurité de Java n’a pas et n’a toujours pas implémenté toutes ces fonctionnalités. Par exemple, l'authentification a été ajoutée à la version Java 1.1 et le cryptage est actuellement disponible sur la plate-forme Java 2 en tant qu'extension.

Figure 1 - Les classes de contrôle d'accès du package java.security [2]

Le package java.security contient toutes les interfaces et les classes utilisées pour l’architecture de sécurité Java (voir figure 1). Ces classes peuvent être classées dans des classes implémentant le contrôle d'accès, également appelées autorisation, qui empêchent le code non fiable d'effectuer des opérations délicates, et dans des classes implémentant l'authentification, qui permettent la synthèse de messages et les signatures numériques et peuvent authentifier les classes Java et autres objets.

2.1 Sécurité dans les applications Web

Bayse (2004) décrit les problèmes de sécurité liés à l'utilisation et à la mise en œuvre d'applications Web dans le cadre de ses travaux. Une liste de contrôle de la sécurité pour la conception d'applications Web [3].

Bayse (2004) décrit les applications Web comme très utiles pour les entreprises en raison de leur accès rapide aux ressources internes et du fait que leur déploiement est presque sans effort lorsqu'il est exécuté à distance. Cependant, ce sont précisément les mêmes raisons qui peuvent engendrer de graves risques pour la sécurité, puisqu’une application Web non sécurisée peut fournir un accès rapide et sans effort à des données professionnelles précieuses et privées pour des utilisateurs non autorisés via de nombreux chemins différents, comme illustré à la figure 2 [3]. , Abstrait].

Figure 2 - Différents chemins dans une application pour nuire à l'organisation [4]

Bayse (2004) spécifie une liste de contrôle des problèmes de sécurité, qui fournit une base pour la sécurisation des applications Web et des sources de données auxquelles ils se connectent, contre les abus malveillants et non intentionnels.

  • L'évaluation des risques
  • authentification
  • Autorisation et contrôle d'accès
  • gestion de session
  • Validation des données et des entrées
  • Cross Site Scripting (XSS)
  • défauts d'injection de commande
  • débordement de tampon
  • La gestion des erreurs
  • enregistrement
  • Administration à distance
  • Configuration de l’application Web et du serveur [3, Résumé] De plus, en ce qui concerne la sécurité des applications Web, il existe un projet appelé

Projet OWASP Top Ten [5], réalisé par le projet de sécurité des applications Web ouvertes (OWASP) [6]. OWASP est une organisation à but non lucratif dont l’objectif est d’aider les entreprises et les particuliers à améliorer la sécurité de leurs logiciels, en leur donnant plus de visibilité sur la sécurité des logiciels afin que les décisions puissent être prises en fonction des risques réels liés à la sécurité des logiciels. Le projet OWASP Top Ten fournit un document sur la sécurité des applications Web, qui répertorie les dix risques de sécurité des applications Web les plus critiques pris en compte par le projet.

Le 12 juin 2013, le Top Ten de l'OWASP 2013 a été officiellement publié. Il se présente comme suit:

  • A1 - Injection
  • A2 - Authentification brisée et gestion de session
  • A3 - Script intersite (XSS)
  • A4 - Références d'objet direct non sécurisées
  • A5 - Mauvaise configuration de la sécurité
  • A6 - Exposition de données sensibles
  • A7 - Contrôle d'accès manquant au niveau de la fonction
  • A8 - Falsification de requête intersite (CSRF)
  • A9 - Utilisation de composants avec des vulnérabilités connues
  • A10 - Redirections et transferts non validés

La méthodologie de production de ce top dix est documentée sur le site Web de l'OWASP [7].

2.2 Cadres de sécurité Java

Outre Apache Shiro, plusieurs infrastructures de sécurité sont disponibles pour les applications Java. Vous trouverez ici un bref aperçu des cadres les plus couramment utilisés.

HDIV

HDIV est un framework open source qui vise à éviter ou à réduire les risques de sécurité Web qui existent actuellement dans certains des frameworks Web JVM les plus utilisés en raison de leur conception. HDIV s’intègre pour fonctionner à partir de l’application, au lieu de suivre le comportement des applications Web traditionnelles fonctionnant comme des pare-feu. Il est annoncé que ce framework couvre tous les risques Web décrits par OWASP Top 10. En ce qui concerne le support Web, il peut être intégré à de nombreux frameworks Web, notamment Spring, Grails, Struts et JSF (Java Server Faces) [8].

Sécurité de printemps

Spring Security est une infrastructure qui fournit à la fois l’authentification et l’autorisation aux applications Java. Sur son site Web, il est annoncé que la véritable force de Spring Security réside dans la facilité avec laquelle elle peut être étendue pour répondre aux exigences personnalisées.

Decouvrir ces documents

  • Guide de démarrage avec le Framework Apache HBase

    Guide de démarrage avec le Framework Apache HBase

  • Manuel avancé sur l’utilisation du Framework JAVA apache Accumulo

    Manuel avancé sur l’utilisation du Framework JAVA apache Accumulo

  • Formation d’apprentissage sur la bibliothèque Java Apache MAHOUT

    Formation d’apprentissage sur la bibliothèque Java Apache MAHOUT

  • Cours Java pour débuter avec le Framework Apache Nutch [Eng]

    Cours Java pour débuter avec le Framework Apache Nutch [Eng]

  • Cours détaillé avec exemples sur le Framework JAVA Apache Velocity pour débutant

    Cours détaillé avec exemples sur le Framework JAVA Apache Velocity pour débutant

  • Documentation pour débuter avec le Framework Apache Wicket et Eclipse JEE

    Documentation pour débuter avec le Framework Apache Wicket et Eclipse JEE

  • Formation sur le développement web avec le Framework Apache Cocoon

    Formation sur le développement web avec le Framework Apache Cocoon

  • Cours de formation pour s’initier avec Apache Nutch

    Cours de formation pour s’initier avec Apache Nutch

Articles connexes

  • Python, pour quelles catégories d’applications ?
  • TOP logiciels de planning pour entreprise de sécurité, nettoyage et gardiennage
  • Tuto Python & Django : créer une page web
  • Comment faire un plan de localisation ?
  • Exercice liste chainée générique JAVA - Structures de données abstraites
  • Quel dispositif de sécurité privilégier pour les travailleurs isolés ?
  • Pourquoi les apps ByteDance restent bloquées malgré le retour de TikTok aux USA?
  • TOP logiciels de planning d'affectation territoriale gratuits et payants
  • Contactez-nous
  • A propos de nous
  • On recrute
  • Rechercher dans le site
  • Politique de confidentialité
  • Droit d'auteur/Copyright
  • Conditions générales d'utilisation
  • Plan du site
  • Accueil
  • Blog
  • Finance et compta.
  • Formations Pro.
  • Logiciels & Apps
  • Organisation
  • Cours informatique
  • Aide à la rédaction
  • Etudes et Metiers
  • Science et Tech
  • Titans de la Tech
id 11354 02