La sécurité des applications avec ESAPI
-
Upload
takfa-kenouche -
Category
Engineering
-
view
102 -
download
2
Transcript of 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
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
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.
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.
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.
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).
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.
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.
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.