9
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

La sécurité des applications avec ESAPI

Embed Size (px)

Citation preview

Page 1: La sécurité des applications avec ESAPI

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

Page 2: La sécurité des applications avec ESAPI

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

Page 3: La sécurité des applications avec ESAPI

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.

Page 4: La sécurité des applications avec ESAPI

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.

Page 5: La sécurité des applications avec ESAPI

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.

Page 6: La sécurité des applications avec ESAPI

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).

Page 7: La sécurité des applications avec ESAPI

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.

Page 8: La sécurité des applications avec ESAPI

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.

Page 9: La sécurité des applications avec ESAPI

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.