SlideShare une entreprise Scribd logo
1  sur  2
Télécharger pour lire hors ligne
Projet de Base de données

Objectif :

L'objectif est de se familiariser avec des aspects importants pour le développement d'applications
utilisant des bases de données.
Dans une première étape, vous devez construire un MCD permettant de modéliser une base de
location de voitures. Dans une deuxième étape, vous réaliserez le MLD correspondant; puis
implanterez le MPD sous Oracle Express. Enfin, vous insèrerez quelques données,
judicieusement choisies par rapport aux questions Q1 à Q5 dont vous donnerez le texte SQL
dans la partie 3. Dans la partie 4, vous testerez l'appel d'une base de données depuis JAVA. Pour
cela, un exemple simple, permettant de débuter est fourni. Sur la base de cet exemple, il vous est
demandé de réaliser une application simpliste. Enfin, vous tenterez de réaliser une attaque au
processus d'identification développé dans la partie 4, montrant qu'une mauvaise programmation peut
générer des failles importantes.

Docs et programmes sur http://www-smis.inria.fr/~bouganim/ensta/projet (dès ce soir)

Installation :
o Si vous avez des outils pour développer en JAVA, vous pouvez les utiliser, sinon, vous pouvez
   utiliser Eclipse. Sur un PC windows, vous pouvez télécharger Eclipse (j2re-1_4_2_13-windows-
   i586-p.exe)
o Copiez les exemples fournis – compilez les et testez les (après avoir notamment vérifié /
   modifié les paramètres de connexion)

Partie 1 – Réalisation du MCD

Il faudra créer le MCD en se basant d'une part sur le (court) texte décrivant le contexte associé
ainsi que sur les questions Q1 à Q5 indiquées et qui seront utilisées dans la partie 3. Ainsi, le
MCD créé devra permettre de stocker les informations nécessaires pour pouvoir répondre à ces
questions et, si possible, pas plus. La création d'un MCD plus complexe est en général source
d'erreurs. Dans tous les cas, vous aurez au plus 7 entités ou associations au total. Il n'y a pas
une seule bonne solution, tout comme, nous l'avons vu en cours, il n'y a pas une seule bonne
modélisation. La modélisation sera considérée correcte à partir du moment où les choix sont
justifiés et pertinents. Aussi, en cas de doute ou d'imprécision dans le contexte, vous pourrez
apportez toutes sortes de précisions, en les justifiant, dans le texte accompagnant le MCD.


Location de voiture
Une agence de location de voiture souhaite gérer son parc locatif. Chaque véhicule est d'une
certaine catégorie (A, B, C, D, E) indiquant le tarif journalier, etc… Les clients louent des
voitures pour une certaine durée (on ignorera les forfaits, etc.).
       Q1 : Liste des catégories triées par prix à la journée
       Q2 : Liste des locations de véhicule de catégorie E triés par date
       Q3 : Liste des véhicules jamais loués
       Q4 : Nombre de location par catégorie
       Q5 : Vérifiez qu'un véhicule donné n'est pas loué deux fois (ou plus) à la même période




                                               -1-
Partie 2 – Réalisation du MLD et MPD

Utilisez les règles de transformation vues en cours et les règles de vérification et proposez un
MLD correspondant au MCD de la Partie 1. Si vous simplifiez le MLD, justifiez vos
simplifications.
Donnez le texte SQL de création de la base (en le testant sur Oracle Express) en
       •   Choisissant le bon type pour chaque attribut
       •   Pensant à rajouter les contraintes de clé primaire (en les nommant)
       •   Pensant à rajouter les contraintes d'intégrité référentielles (en les nommant)
Insérez un jeu de données permettant de tester les requêtes de la partie 3.

Partie 3 – Questions SQL
Donnez le texte SQL correspondant aux questions Q1 à Q5 et vérifiez-les sur Oracle Express

Partie 4 – Application

Sur le modèle de TestDB, construisez un petit programme qui
          o Se connecte à la base de données comme l’utilisateur «TP»
          o Demande un login (saisi au clavier) et un mot de passe (saisi au clavier) et va vérifier
              dans la table « Logins », créée préalablement dans Oracle, l'existence du couple
              login/password.
          o Si le login/mot de passe existe, demande une catégorie et affiche l’immatriculation
              des véhicules de la catégorie correspondante.


Partie 5 – Attaque et correction

Réalisez des attaques par injection de code SQL sur votre petit programme.
           o Par injection, sans modifier le programme JAVA, contournez le mécanisme
               d'authentification créé dans la partie 1
           o Par injection, récupérez, sans modifier le programme JAVA, le nom des clients
           o Corrigez votre programme pour qu’il soit résistant à ces attaques.


Documents à rendre :
        o MCD
        o MLD
        o Texte SQL de création
        o Teste SQL des questions
        o Code source java de l’application
        o Petits commentaires (2 à 3 pages maxi)




                                                 -2-

Contenu connexe

Similaire à 2009 m1 ensta_projet_bases_de_donnees

Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db firstZineb ELGARRAI
 
Envoi sms oracle_forms_10g
Envoi sms oracle_forms_10gEnvoi sms oracle_forms_10g
Envoi sms oracle_forms_10gEmpterprize
 
CocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads France
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsOCTO Technology
 
Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010MD DAY
 
Tech days 2012 mvvm de a à z
Tech days 2012   mvvm de a à zTech days 2012   mvvm de a à z
Tech days 2012 mvvm de a à zArnaud Auroux
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdfimenhamada17
 
Microsoft business-intelligence
Microsoft business-intelligenceMicrosoft business-intelligence
Microsoft business-intelligenceBENJID Mohamed
 
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
1-supportpoojavapremirepartie-140408132307-phpapp01.pptxRihabBENLAMINE
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partageraliagadir
 
Octo Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endOcto Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endFrançois Petitit
 

Similaire à 2009 m1 ensta_projet_bases_de_donnees (20)

Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
 
Envoi sms oracle_forms_10g
Envoi sms oracle_forms_10gEnvoi sms oracle_forms_10g
Envoi sms oracle_forms_10g
 
Architecture .net
Architecture  .netArchitecture  .net
Architecture .net
 
CocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - Epitez
 
CV_Bilel CHAOUADI
CV_Bilel CHAOUADICV_Bilel CHAOUADI
CV_Bilel CHAOUADI
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les fronts
 
Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010
 
Tech days 2012 mvvm de a à z
Tech days 2012   mvvm de a à zTech days 2012   mvvm de a à z
Tech days 2012 mvvm de a à z
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdf
 
Xtreme Programming
Xtreme ProgrammingXtreme Programming
Xtreme Programming
 
Method XP
Method XP Method XP
Method XP
 
Diapo PFE
Diapo PFEDiapo PFE
Diapo PFE
 
Microsoft business-intelligence
Microsoft business-intelligenceMicrosoft business-intelligence
Microsoft business-intelligence
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
 
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
jQuery vs AngularJS
jQuery vs AngularJS jQuery vs AngularJS
jQuery vs AngularJS
 
Octo Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endOcto Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-end
 

Plus de karousn

Modl2 rap pfe_esti
Modl2 rap pfe_estiModl2 rap pfe_esti
Modl2 rap pfe_estikarousn
 
Assemblage par vues de composants
Assemblage par vues de composantsAssemblage par vues de composants
Assemblage par vues de composantskarousn
 
2009 m1 ensta_projet_bases_de_donnees
2009 m1 ensta_projet_bases_de_donnees2009 m1 ensta_projet_bases_de_donnees
2009 m1 ensta_projet_bases_de_donneeskarousn
 
Template _rapport_pfe - new_copi
Template  _rapport_pfe - new_copiTemplate  _rapport_pfe - new_copi
Template _rapport_pfe - new_copikarousn
 
Modl2 rap pfe_esti
Modl2 rap pfe_estiModl2 rap pfe_esti
Modl2 rap pfe_estikarousn
 
Assemblage par vues de composants
Assemblage par vues de composantsAssemblage par vues de composants
Assemblage par vues de composantskarousn
 
Template _rapport_pfe - new
Template  _rapport_pfe - newTemplate  _rapport_pfe - new
Template _rapport_pfe - newkarousn
 
Javascript
JavascriptJavascript
Javascriptkarousn
 

Plus de karousn (9)

Modl2 rap pfe_esti
Modl2 rap pfe_estiModl2 rap pfe_esti
Modl2 rap pfe_esti
 
Assemblage par vues de composants
Assemblage par vues de composantsAssemblage par vues de composants
Assemblage par vues de composants
 
2009 m1 ensta_projet_bases_de_donnees
2009 m1 ensta_projet_bases_de_donnees2009 m1 ensta_projet_bases_de_donnees
2009 m1 ensta_projet_bases_de_donnees
 
Template _rapport_pfe - new_copi
Template  _rapport_pfe - new_copiTemplate  _rapport_pfe - new_copi
Template _rapport_pfe - new_copi
 
Modl2 rap pfe_esti
Modl2 rap pfe_estiModl2 rap pfe_esti
Modl2 rap pfe_esti
 
Assemblage par vues de composants
Assemblage par vues de composantsAssemblage par vues de composants
Assemblage par vues de composants
 
Template _rapport_pfe - new
Template  _rapport_pfe - newTemplate  _rapport_pfe - new
Template _rapport_pfe - new
 
Php
PhpPhp
Php
 
Javascript
JavascriptJavascript
Javascript
 

2009 m1 ensta_projet_bases_de_donnees

  • 1. Projet de Base de données Objectif : L'objectif est de se familiariser avec des aspects importants pour le développement d'applications utilisant des bases de données. Dans une première étape, vous devez construire un MCD permettant de modéliser une base de location de voitures. Dans une deuxième étape, vous réaliserez le MLD correspondant; puis implanterez le MPD sous Oracle Express. Enfin, vous insèrerez quelques données, judicieusement choisies par rapport aux questions Q1 à Q5 dont vous donnerez le texte SQL dans la partie 3. Dans la partie 4, vous testerez l'appel d'une base de données depuis JAVA. Pour cela, un exemple simple, permettant de débuter est fourni. Sur la base de cet exemple, il vous est demandé de réaliser une application simpliste. Enfin, vous tenterez de réaliser une attaque au processus d'identification développé dans la partie 4, montrant qu'une mauvaise programmation peut générer des failles importantes. Docs et programmes sur http://www-smis.inria.fr/~bouganim/ensta/projet (dès ce soir) Installation : o Si vous avez des outils pour développer en JAVA, vous pouvez les utiliser, sinon, vous pouvez utiliser Eclipse. Sur un PC windows, vous pouvez télécharger Eclipse (j2re-1_4_2_13-windows- i586-p.exe) o Copiez les exemples fournis – compilez les et testez les (après avoir notamment vérifié / modifié les paramètres de connexion) Partie 1 – Réalisation du MCD Il faudra créer le MCD en se basant d'une part sur le (court) texte décrivant le contexte associé ainsi que sur les questions Q1 à Q5 indiquées et qui seront utilisées dans la partie 3. Ainsi, le MCD créé devra permettre de stocker les informations nécessaires pour pouvoir répondre à ces questions et, si possible, pas plus. La création d'un MCD plus complexe est en général source d'erreurs. Dans tous les cas, vous aurez au plus 7 entités ou associations au total. Il n'y a pas une seule bonne solution, tout comme, nous l'avons vu en cours, il n'y a pas une seule bonne modélisation. La modélisation sera considérée correcte à partir du moment où les choix sont justifiés et pertinents. Aussi, en cas de doute ou d'imprécision dans le contexte, vous pourrez apportez toutes sortes de précisions, en les justifiant, dans le texte accompagnant le MCD. Location de voiture Une agence de location de voiture souhaite gérer son parc locatif. Chaque véhicule est d'une certaine catégorie (A, B, C, D, E) indiquant le tarif journalier, etc… Les clients louent des voitures pour une certaine durée (on ignorera les forfaits, etc.). Q1 : Liste des catégories triées par prix à la journée Q2 : Liste des locations de véhicule de catégorie E triés par date Q3 : Liste des véhicules jamais loués Q4 : Nombre de location par catégorie Q5 : Vérifiez qu'un véhicule donné n'est pas loué deux fois (ou plus) à la même période -1-
  • 2. Partie 2 – Réalisation du MLD et MPD Utilisez les règles de transformation vues en cours et les règles de vérification et proposez un MLD correspondant au MCD de la Partie 1. Si vous simplifiez le MLD, justifiez vos simplifications. Donnez le texte SQL de création de la base (en le testant sur Oracle Express) en • Choisissant le bon type pour chaque attribut • Pensant à rajouter les contraintes de clé primaire (en les nommant) • Pensant à rajouter les contraintes d'intégrité référentielles (en les nommant) Insérez un jeu de données permettant de tester les requêtes de la partie 3. Partie 3 – Questions SQL Donnez le texte SQL correspondant aux questions Q1 à Q5 et vérifiez-les sur Oracle Express Partie 4 – Application Sur le modèle de TestDB, construisez un petit programme qui o Se connecte à la base de données comme l’utilisateur «TP» o Demande un login (saisi au clavier) et un mot de passe (saisi au clavier) et va vérifier dans la table « Logins », créée préalablement dans Oracle, l'existence du couple login/password. o Si le login/mot de passe existe, demande une catégorie et affiche l’immatriculation des véhicules de la catégorie correspondante. Partie 5 – Attaque et correction Réalisez des attaques par injection de code SQL sur votre petit programme. o Par injection, sans modifier le programme JAVA, contournez le mécanisme d'authentification créé dans la partie 1 o Par injection, récupérez, sans modifier le programme JAVA, le nom des clients o Corrigez votre programme pour qu’il soit résistant à ces attaques. Documents à rendre : o MCD o MLD o Texte SQL de création o Teste SQL des questions o Code source java de l’application o Petits commentaires (2 à 3 pages maxi) -2-