La sécurité des applications avec ESAPI

478 vues

Publié le

sécuriser votre application grâce à la bibliothèque ESAPI

Publié dans : Ingénierie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
478
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
8
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

La sécurité des applications avec ESAPI

  1. 1. Mai 2014 ECOLE NATIONALE SUPERIEURE D’INFORMATIQUE Mini-projet: D'lala Online TP N°3 IPLS Développement d’une application de vente en ligne sécurisée avec ESAPI Trinôme : KENOUCHE Takfarinas HALLAK Sidali Guernane Hamza Encadré par : Y.Challal
  2. 2. Sommaire I. Description de l’application :.................................................................................................. 3 II. Description de l’outil de développement :............................................................................... 3 PLAY2 :................................................................................................................................... 3 III. Architecture de l’application :............................................................................................. 4 IV. La Sécurité du Framework PLAY2: ....................................................................................... 4 Est-ce que on besoin de ESAPI si on utilise PLAY2?................................................................... 4 1) ESAPI d’OWASP :............................................................................................................ 5 V. Intégration d’ESAPI dans le Framework PLAY2 :....................................................................... 6 VI. Prévention des Failles :....................................................................................................... 7 1) Le Cross Site Scripting :..................................................................................................... 7 2) Violation de Gestion d'Authentification et de Session :......................................................... 7 3) Références directes non sécurisées à un objet :..................................................................... 7 4) Exposition de données sensibles :........................................................................................ 7 5) Manque de contrôle d’accès au niveau fonctionnel :............................................................. 7 6) Falsification de requête intersites :....................................................................................... 7 VII. Intégration d’ESAPI ............................................................................................................ 8 1) Dans la classe commandes.java :......................................................................................... 8 2) Dans la classe Products.java :.............................................................................................. 9 VIII. Conclusion :....................................................................................................................... 9
  3. 3. I. Description de l’application : L'application D'lala Online permet à un utilisateur authentifié d'effectuer une recherche de produits dans une base de données. Cette application garantit la sécurité de toutes les opérations que l’utilisateur peut effectuer. II. Description de l’outil de développement : L’application web D’lala Online à été développé avec le Framework PLAY2. PLAY2 : un Framework open source de développement web dans la sphère java, visant à offrir une productivité plus élevée aux développeurs de par sa simplicité et sa facilité d’accès. Play est un Framework MVC basé sur la JVM (il n’est pas un Framework JEE), il n’implémente pas la norme Servlet, il se base pas sur un serveur HTTP simple appelé Apache Mina. Ce Framework utilise des langages connus HTML, Scala et JAVA. Des grandes sites ont été développé avec PLAY2 citons :  LinkedIn : est un réseau social professionnel en ligne qui revendique plus de 300 millions de membres issus de 170 secteurs d'activités dans plus de 200 pays et territoires.  Klout : est un site web couplé avec une application pour Smartphones, qui prend en compte l'activité sur les médias sociaux pour classer ses utilisateurs en fonction de leur influence sociale en ligne.  The Guardian : est un quotidien d'information britannique  Gilt Groupe : est une entreprise de commerce électronique américaine, elle fait des ventes flash en ligne, de vêtements et d'accessoires de couturiers…etc.
  4. 4. III. Architecture de l’application : L’application D’lala Online est organisée de tel sorte que : Le client peut passer une commande constituée de plusieurs produits, ces derniers appartiennent à des catégories différentes (un produit appartient à une seule catégorie). Toutes les commandes d’un client sont sauvegardées dans une ligne de commande. Le diagramme ci-dessous montre la structure de D’lala Online : IV. La Sécurité du Framework PLAY2: Le Web est devenu un lieu où on peut échanger des informations mais il est également devenu un marché à part entière pour la vente et l'achat de biens matériels. Les acteurs de ce nouveau marché ont besoin de sécurité sous tous ses aspects, la protection de la confidentialité, l'intégrité et de la disponibilité de l'information. Est-ce que on besoin de ESAPI si on utilise PLAY2? Play est assez robuste car il inclut l'échappement automatique de potentiels vecteur de cross site Scripting mais si vous n'utilisez pas les modèles de Framework PLAY2pour afficher les données (mais une API AJAX), vous aurez besoin de le faire séparément. Play offre également un cadre tout à fait bon de validation, mais vous avez encore besoin de mettre en œuvre des fonctions de validation pour certains types de contenu et c'est là que l'OWASP ESAPI est très utile.
  5. 5. 1) ESAPI d’OWASP : C’est une bibliothèque open source destinée pour les applications web pour le contrôle de sécurité conçu pour permettre aux programmeurs de rénover des applications existantes de façon très simple. ESAPI pour Java est également une base solide pour un nouveau développement, surtout qu’elle permet la validation des entrées, l’encodage des sorties et le contrôle d’accès pour les objets. Les grands organismes qui l’utilisent :  L'Apache Software Foundation : est une organisation à but non lucratif qui développe des logiciels open source sous la licence Apache, dont le renommé serveur web Apache HTTP Server.  Foundstone de McAfee : le géant de la sécurité de l’information, fournit des solutions stratégiques aux problèmes de sécurité.  American Express : est une entreprise financière américaine, spécialisée dans les moyens de paiement, connue pour ses cartes de paiement ainsi que ses chèques de voyage et acteur de premier plan dans l'organisation de voyages d'affaires.  US Navy : est la marine de guerre des États-Unis et représente l'une des cinq composantes des forces armées des États-Unis. Elle est depuis la Seconde Guerre mondiale la première force aéronavale au monde.
  6. 6. V. Intégration d’ESAPI dans le Framework PLAY2 : On va ajouter les fichiers d’ESAPI comme la montre la capture suivante : ESAPI à besoin des fichiers suivants :  esapi-2.1.0.jar : la librairie ESAPI qui va être placé dans le répertoire lib/.  Antisamy-esapi.xml : qui contient les règles de W3C qui permet de vérifier le contenu HTML introduit par l’utilisateur dont le but d’éviter des attaques tel que XSS.  Validation.properties : le validateur de d’ESAPI qui permet la vérification des entrées (exemple : validation par liste blanche).  ESAPI.properties : c’est le fichier de configuration d’ESAPI (au minimum il faut modifier Encryptor.MasterKey, Encryptor.MasterSalt).
  7. 7. VI. Prévention des Failles : 1) Le Cross Site Scripting : Consiste à injecter du code (html, javascript ...) directement dans les pages web via un formulaire à remplir ou autres, cela amène à exécuter un script dans le navigateur de la victime afin de détourner des sessions utilisateur, défigurer des sites web, ou rediriger l'utilisateur vers des sites malveillants. Cette vulnérabilité va être évitée on utilisant la bibliothèque d’ESAPI d’OWASP. 2) Violation de Gestion d'Authentification et de Session : Les sessions ne sont pas généralement gérées correctement, ceci permet aux attaquants de compromettre les mots de passe, jetons de session, ou d'exploiter d'autres failles d'implémentation pour s'approprier les identités d'autres utilisateurs. 3) Références directes non sécurisées à un objet : Cela arrive lorsqu’expose une référence à un objet d'exécution interne, un enregistrement de base de données ou une clé de base de données. Les attaquants peuvent manipuler ces références pour accéder à des données non autorisées. 4) Exposition de données sensibles : Les données faiblement protégées sont exposées à divers attaques tel que le vol d'identité ou fraude. Ces données méritent une protection supplémentaire tel un chiffrement statique ou en transit, ainsi que des précautions particulières lors de l'échange avec le navigateur. 5) Manque de contrôle d’accès au niveau fonctionnel : Il est indispensable d’effectuer des vérifications de contrôle d'accès sur le serveur lors de l'accès à chaque fonction, dans le cas contraire il est possible de forger des demandes afin d'accéder à une fonctionnalité non autorisée. 6) Falsification de requête intersites : Cette attaque force le navigateur d'une victime authentifiée à envoyer une requête HTTP forgée, comprenant le cookie de session de la victime ainsi que toute autre information automatiquement inclue, à une application web vulnérable. Le Framework PLAY2 à été configuré pour résoudre les attaques (2, 3, 4,5 et 6) citées au-dessus.
  8. 8. VII. Intégration d’ESAPI 1) Dans la classe commandes.java : Lors de la récupération des données d’une commande, il est indispensable de vérifier le flux de données venant du service web au tant que Json dont le but d’éviter les attaques de type XSS. La quantité et le total de la commande est récupéré comme étant un texte, on utilise la fonction encodeForJavaScript pour échapper le contenu JavaScript dans le cas d’une attaque XSS.
  9. 9. 2) Dans la classe Products.java : Utiliser la fonction encodeForHtml lors de la récupération du nom, prix, description et catégorie du produit, pour échapper le contenu Html dans le cas d’une attaque XSS. VIII. Conclusion : La sécurité des applications Web ne peut plus être ignorée. De plus en plus souvent, les vols de données et les incidents liés aux applications Web font la une de l’actualité de la sécurité. Alors la solution c’est de combiner un Framework de développement d’application tel que Play avec un Framework de sécurité tel qu’ESAPI.

×