Vous êtes sur la page 1sur 93

Mémoire de fin d’études

Pour l’obtention du diplôme de Master II en Informatique

Option: Base de Données et Génie Logiciel (BDGL)

Amélioration et
sécurisation du Site web
CenTIC-Mada

Réalisé par : RANDRIAMIALY ANDRIAMBOAHANGY SOLOFO HERY

Filière: Informatique

Spécialité: Base de donnée et Génie Logiciel

Niveau: Master II

Année Universitaire: 2017 -2018

Encadreur  pédagogique : Monsieur RAJAONARISON Roméo

Encadreur professionnel : Monsieur TOVOHISANDRATANA Clermont


REMERCIEMENTS
« FA IZAY MIANDRY AN’I JEHOVAH DIA MANDROSO HERY KOSA » (Isaia40:31a)

C’est avec la force qu’Il m’a donnée que j’ai pu finir ce travail. Alors j’exprime mes
déférences au Seul et Unique Créateur de l’univers ; car sans sa bénédiction, cette étude n’a
pu être accomplie.

De nombreuses personnes ont contribué à la réalisation de ce travail. Je voudrais, ici, leur


adresser toute ma gratitude et ma reconnaissance, notamment à:

– Madame JAONARY Josa Augustina Directeur Général de l’établissement


CNTEMAD, d’avoir bien voulu nous recevoir comme étudiant au CNTEMAD. 

– Monsieur RAJAONARISON Roméo, mon encadreur pédagogique, qui a su diriger


ce travail avec beaucoup de soins et d’attentions. Il va sans dire que sans lui, l’idée de
travail sur un sujet aussi attrayant et passionnant ne m’aurait pas effleuré l’esprit. Je
tiens surtout à le remercier pour les conseils judicieux et avisés, sa disponibilité et sa
rigueur scientifique, qui m’ont permis d’avancer et de progresser énormément dans
mes travaux. Par ailleurs, il s’est toujours inquiété de savoir si ma mémoire se
déroulait dans les meilleures conditions.

– A Monsieur TOVOHISANDRATANA Clermont, encadreur professionnel du


CenTIC-Mada d’avoir voulu le conseiller et accueillir au sein de son établissement et
qu’il me soit permis de rendre un vibrant hommage à mon encadreur pour avoir bien
voulu superviser ce modeste travail et donne de son temps et de son intelligence à la
réussite de ce projet qui, pour moi, représente un modèle de réussite et une source de
motivation permanente, pour sa disponibilité, et son sens aigu de l’humanisme
pédagogique.

– Je remercie aussi toutes les personnes que je n’ai pas pu nommer ici et qui ont
participé de près ou de loin à cette épopée.

Enfin, je dédie ce mémoire à mes parents qui m’ont permis de mener à bien cette tâche. Leur
exemplarité, leur sagesse et leur sérénité m’ont aidé à dépasser les limites de mon possible.

A vous tous, merci !

I
Sommaire
Introduction...........................................................................................................................................1
Partie I : Environnement.........................................................................................................................2
- CHAPITRE 1:Centre National de Télé-Enseignement de Madagascar........................................2
1.1 Présentation générale..............................................................................................................2
1.2 Organigramme du CNTEMAD...................................................................................................3
1.3 Les formations du CNTEMAD....................................................................................................4
1.4 Illustration du Cursus du CNTEMAD.........................................................................................5
1.5 Répartition des CRTE dans tout Madagascar............................................................................6
- CHAPITRE 2 : Présentation du CenTIC-Mada.............................................................................7
2.1 Historique................................................................................................................................7
2.2 Activités....................................................................................................................................7
2.3 Recensement des outils informatiques....................................................................................8
2.4 Les applications........................................................................................................................9
2.5 Les équipements d’interconnexion..........................................................................................9
- CHAPITRE 3: Présentation du projet........................................................................................10
3.1 Le site web e-Learning du CenTIC-Mada.................................................................................10
3.2 Le Framework.........................................................................................................................11
3.3 Le SGBDR MySQL....................................................................................................................12
Partie II : Etude du système..................................................................................................................16
- CHAPITRE 1: Présentation du système....................................................................................16
1.1 Analyse de l’existant...............................................................................................................16
1.2 Planning prévisionnel.............................................................................................................16
- CHAPITRE 2: Les technologies utilisés......................................................................................17
2.1 Le langage graphique UML2.............................................................................................17
2.2 Les outils...........................................................................................................................18
2.3 Framework Symfony3.......................................................................................................21
- CHAPITRE 3: Sécurisation de l’application...............................................................................31
3.1 Introduction :..................................................................................................................................31
3.2 La cryptographie :....................................................................................................................32
3.3 Sécurisation d’une application Web :......................................................................................45
3.4 Les risques...............................................................................................................................46
3.5 Les techniques de sécurité......................................................................................................51
Partie III : Réalisation et discussion......................................................................................................56
- CHAPITRE 1: Résultat...............................................................................................................56
- 1.1 Analyse orienté objet et son processus.............................................................................56
- 1.2 Phase de réalisation...........................................................................................................62
- CHAPITRE 2 : Problèmes vécues et solutions apportées..........................................................70
2.1 Le contrainte dans la réalisation du projet.............................................................................70
2.2 Les solutions apportées..........................................................................................................71
- CHAPITRE 3 : Discussion..........................................................................................................71
3.1 Les atouts et faiblesses de l’étude..........................................................................................71
3.2 Les perspectives d’avenir du projet........................................................................................72
Conclusion............................................................................................................................................74
Bibliographie........................................................................................................................................75
AVANT-PROPOS
Ce projet est le résultat d’un stage de recherche d’une période de deux mois effectué
au sein du laboratoire de CENTIC Mada auprès de Monsieur Clermont Tovohisandratana,
enseignant-chercheur et directeur du centre de formation CENTIC-MADA.

Son expérience, ses relations et ses interventions m’ont été fortement utiles pour
recadrer une étude dont le champ est très vaste.

Ayant déjà une expérience dans le domaine des Technologies de l’Information et de la


communication qui, je dois le dire, est passionnant, je me suis redirigé vers ce domaine pour
effectuer le travail de recherche inclus dans ma formation au Centre National de Télé-
Enseignement de Madagascar(CNTEMAD). A la recherche d’un sujet d’actualité et encore
peu exploré, je me suis logiquement adressé au CENTIC-MADA qui est un centre de
formation et boite de développement des logiciels internationales.

Le choix du sujet est en effet directement issu de l’actualité récente avec l’annonce faite par
cet centre même en mai 2015 à l’issue de la mission « Sécurité et framework ».

Ce mémoire de fin d’études présente alors une nouvelle approche de la sécurisation


d’une application web.
Résumé
En guise de conclusion, puisque nous travaillons avec le Framework Symfony. Ce projet nous
a donné l’opportunité de s’imprégner dans la vie professionnelle du développement dans un
milieu réel et avoir un début d’expérience significatif. La nôtre est différente car celle-ci
consiste à concevoir et réaliser un site web e-Learning du CenTIC-Mada pour avoir une
sécurité forte de l’application. Pour ce faire, nous avons analysé le problème avec une
orientation objet, qui est une démarche de modélisation UML. On a utilisé les bonnes
pratiques de développement PHP pour concevoir l’application de qualité professionnels grâce
à Symfony un Framework très puissant qui nous a permis de réaliser rapidement cet outil
complexe. Nous avions su gérer le temps pour la réalisation.

Abstract

In conclusion, since we are working with the Symfony Framework. This project gave us the

opportunity to immerse ourselves in the professional development life in a real environment

and to have a significant beginning of experience. Ours is different because it consists of

designing and building a CenTIC-Mada e-Learning website to have strong application

security. To do this, we analyzed the problem with an oriented object programming, which is

a UML modeling approach. We used PHP development practices to design the professional

quality application using Symfony, a very powerful framework that allowed us to quickly

build this complex tool. We knew how to manage the time for the realization.
Figures et tableaux
Figure 1 : Organigramme du CNTEMAD

Figure 2 : Cursus du CNTEMAD

Figure 3 : Répartition des CRTE dans tout Madagascar

Figure 4: Chronologie de l'évolution de la bade de donnée

Figure 5 : Système relationnel

Figure6 : Interface graphique de PHPMyAdmin de WampServer

Figure7 : Parcours complet d'une requête dans Symfony

Figure8: Les différentes briques nécessaires pour accéder à une application web depuis
Internet

Figure 9: Le risque

Figure 10: Déterminer la cible

Figure 11 : Architecture fonctionnel.

Figure 12 : diagramme de cas d’utilisation Administrateur

Figure 13 : diagramme de cas d’utilisation Formateur

Figure 14 : diagramme de cas d’utilisation Etudiant

Figure 15 : Diagramme de classe

Figure 17 : Les formations existantes

Figure 16 : Page d’accueil

Figure 18 : Page de contact

Tableau n°1 : Horaire de travail des personnels de CENTIC-MADA


Tableau n°3 : Caractéristiques des ordinateurs utilisés au CENTIC MADA

Tableau n°4 : Liste des applications

Tableau n°5 : Listes des équipements d’interconnexion

Tableau 6: Planning prévisionnel général


Liste des abréviations
CNTEMAD : Centre National de Télé-Enseignement de Madagascar

CenTIC-Mada : Centre de Technologie de l’Information et Communication de Madagascar

HTML : HyperText Markup Language

CSS : Cascading Style Sheet

URL : Uniform Ressource Locator

SQL : Structured Querry Language

SGBDR : Système de Gestion de Bases de Données Relationnelles

PHP : Hypertext Preprocessor

JS : JavaScript

W3C : Wide Web Consortium

WWW : Word Wild Web

HTTP : Hypertext Transfert Protocol

XML : Extensible Markup Language

DOM : Document Object Model

IBM : International Business Machine

OMG : Object Management Group

MVC : Modèle-Vue-Contrôleur

LAN : Local Area Network

WAN : Wide Area Network

UML : Unified Modeling Language

BSD : Berkeley Software Distribution


CERT : Computer Emergency Response

USB : Universal Serial Bus

LDAP : Ligth Weith Directory Acces Protocol

CAS : Common Acces Service

ANSSI : Agence Nationale de la Sécurité des Système d’Information


Introduction

Afin de valider l’année universitaire, chaque étudiant doit effectuer un stage en


entreprise. Ce stage est une étape très importante pour un étudiant, non seulement du point de
vue de la formation, mais aussi d’un point de vue personnel. En effet, nous pouvons signaler
que la vie en entreprise est nécessaire à la mise en pratique de l’enseignement reçu au
CNTEMAD. Mais, elle permet aussi de côtoyer le monde du travail.

Dans ce contexte vient de s’inscrire mon projet de fin d’étude de Master 2 en


informatique dont l’option Base de données et Génie logiciel (BDGL) à l’établissement
CNTEMAD. Et cela constitue une occasion pour appliquer ce que j’ai étudié au cours de mon
processus de formation et mettre en œuvre mes connaissances dans les différentes phases de
développement.

Pour mener à bien ce travail, nous verrons en premier temps la présentation des deux
cadre d`étude qui sont : le Centre National de Télé-enseignement de Madagascar et
l’Etablissement CenTIC-Mada, ensuite nous devrons également tenter d’analyser les
différentes technologies et outils nécessaires pour ce travail et nous terminerons par la
réalisation du projet grâce aux matériels et méthodes que nous avons illustré.

11
Partie I : Environnement

CHAPITRE 1: Centre National de Télé-


Enseignement de Madagascar

1.1 Présentation générale

Le Centre National de Télé-Enseignement de Madagascar (CNTEMAD) est un


établissement public à caractère industriel et commercial (EPIC) sous tutelle technique du

11
MESupReS, œuvrant dans le domaine de l’enseignement supérieur, qui fut fondé, en 1991,
suivant le décret 92-953 du 04/11/92, afin d’assister et d’accompagner, étroitement,
l’administration des universités publiques malgaches dans leurs taches fondamentales, qui
seraient : d’accueillir, de former, puis de valoriser les parcours (via les diplômes) de tout
citoyen bachelier en quête de cursus universitaire.

Outre le fait de dispenser des formations universitaires habilitées aux marginalisés de


l’université publique (marginalisée pour fautes de moyens et d’infrastructures), le
CNTEMAD a œuvré pour la promotion de l’enseignement supérieur malgache, à travers le
télé-enseignement, auquel il fut le pionnier. Par le biais de cette pratique, le CNTEMAD a
définitivement ôté la notion d’éloignement géographique aux contraintes majeures des
étudiants; qu’il a été constaté, par conséquent, un fort accroissement du taux de fréquentation,
à l’enseignement supérieur, des bacheliers. Un fait qui aurait généré une émergence
surprenante de nouvelle génération d’intellectuels et de professionnels à Madagascar.

Le CNTEMAD est régi sous l’administration d’un conseil composé par des
représentants: ministériels (MESupReS, MinFoP), de la fédération des chambres du
commerce malgache et de l’Enseignement Supérieur malgache (présidents et doyens de
facultés). Son système d’administration se base sur les politiques managériales d’un Directeur
National, assisté par cinq sous-directeurs. Afin d’assurer une totale couverture de la grande île
en formation accréditée, le CNTEMAD est déconcentré en trente-quatre (34) centres
régionaux de télé-enseignement (CRTE). Chaque année, on compte dans les seize mille
(16.000) apprenants inscrits au CNTEMAD. Une des particularités du CNTEMAD, pouvant
confirmer sa notoriété, s’avère être le fait que cet institut dispense des formations accréditées,
à moindre coût, à distance et de qualité.

1.2 Organigramme du CNTEMAD

11
FIGURE 1 : ORGANIGRAMME DU CNTEMAD

1.3 Les formations du CNTEMAD

11
Les formations qui y sont dispensées se distinguent en deux domaines : les Sciences de
l’Ingénieur et les Sciences de la Société.

Le domaine des Sciences de l’Ingénieur est étalé en quatre mentions : l’Informatique,


le Génie Industriel, la Télécommunication et les Techniques de l’Art Graphiques.

Le second domaine est, quant à lui, étalé en : Droit, Economie, Commerce et


Communication.

Toutes ces mentions comprendront par la suite des ensembles de parcours, constitués
par des groupes d’unité d’enseignement.

Aux termes de leurs cursus, le CNTEMAD délivre à ses apprenants des diplômes de
Licence ou de Master, cautionnés par le Ministère de l’Enseignement Supérieur et de la
Recherche Scientifique (MESupReS) et reconnus par le Ministère de la Fonction Publique
(MinFoP).

1.4 Illustration du Cursus du CNTEMAD

11
FIGURE 2 : CURSUS DU CNTEMAD

1.5 Répartition des CRTE dans tout Madagascar

11
FIGURE 3 : RÉPARTITION DES CRTE DANS TOUT MADAGASCAR

11
CHAPITRE 2 : Présentation du CenTIC-Mada

2.1 Historique

CenTIC-Mada(Centre de Technologie d’Information et de la Communication de


Madagascar)a été fondé en Novembre 2012 par des étudiants de la première promotion en
informatique du CNTEMAD et CNAM à Madagascar et a eu pour objectif de mettre en place
un centre de formation de base et de cours d’appui pour des étudiants qui n’ont pas

11
suffisamment de travaux pratiques ou encore pour des étudiants ou des travailleurs qui veulent
approfondir leurs connaissances en programmations , réseaux , systèmes ou web.

 Statut : Entreprise Individuelle


 NIF : 4001 076 543
 STAT : 72309 11 2012 006022
 Adresse: Lot VD 6 Faliarivo Ambanidia ANTANANARIVO

Par la suite, nous allons détailler les activités proposées par CenTIC-Mada.

2.2 Activités
La première activité principale du CenTIC-Mada est la formation des étudiants qui
n’ont jamais touché de l’ordinateur et de donner de cours d’appui (programmation, réseaux et
systèmes, base de données et génie logiciel) pour des étudiants qui n’ont suffisamment de
pratiques tels que des étudiants en ligne, des travailleurs qui veulent approfondir leurs
connaissances.
La deuxième activité c’est la prestation de service :
 Développement d’application
 Maintenance des systèmes et réseaux
 Mise en réseau du parc informatique
Les différents types de formation de CenTIC-Mada sont :
 Programmation (Java, C)
 Systèmes et réseaux
 Cryptographie
 Développement Web (Html, CSS, PHP, JavaScript, Java)

Lundi Mardi Mercredi Jeudi Vendredi


Matin 6h-12h 6h-12h 6h-12h 6h-12h 6h-12h

Après-midi 01h-04h 30 01h-04h 30 01h-04h 30 01h-04h 30 01h-04h 30


Tableau n°1 : Horaire de travail des personnels de CENTIC-MADA

11
2.3 Recensement des outils informatiques

Le tableau ci-dessus montre le recensement des outils informatiques associés aux


services du siège nous a donné :
Rôles des ordinateurs Types OS
12 ordinateurs Intel ® Core™ 2 Due CPU Windows 10
E4600 2600Ghz 2.40 Ghz,
RAM 3Go, 32 bits,
processeur x64.
1 serveur Intel ® Core ™ RAM 4Go, Windows server 10
64 bits

Tableau n°3 : Caractéristiques des ordinateurs utilisés au CENTIC MADA

Dans la sous-section suivante nous allons exposer les différentes applications utilisées
au CENTIC-MADA.

2.4 Les applications

Les applications de CENTIC-MADA sont diverses et installées sur les serveurs


contenus en salle machine. Nous disposons d’environs deux (2) applications qui feront l’objet
d’interconnexion.

Les utilisateurs travaillent en temps réel sur ces applications mentionnées dans le
tableau ci-après.

Applications Rôles Bénéficiaire


Tomcat Serveur Tout le monde
Wamp Server Serveur Tout le monde
Code Blocks Editeur de texte Tout le monde
IntelliJ IDEA Editeur de texte Tout le monde
Pycharm Editeur Tout le monde
Oracle VM Virtual Box Virtualisation Administrateur
Putty Communication des Administrateur
ordinateurs
Tableau n°4 : Liste des applications

Par la suite, nous allons exposer les équipements d’interconnexion.

11
2.5 Les équipements d’interconnexion
Types des terminaux et Modèles Nombres
autres
Switch HP 2 (8 ports chacun)
Imprimante Epson EPL-N 300 1
Tablette NVIDIA® TEGRA ® 3 1
Quad Core CPU 1.30 Hz
Tableau n°5 : Listes des équipements d’interconnexion

CHAPITRE 3: Présentation du projet

11
3.1 Le site web e-Learning du CenTIC-Mada
La présentation de ce projet consiste à l’amélioration du site web e-Learning du
CenTIC-Mada réalisé avec du Framework CodeIgniter, une plateforme sociale Learning pour
le compte des personnels (étudiants) qui souhaitent bénéficier du cours accéléré en
informatique chez CenTIC-Mada. Le E-Learning ou encore formation en ligne est une
technique de formation reposant sur la mise à disposition de contenus pédagogiques via un
support électronique (internet, extranet…). De cette manière, mon sujet de stage consiste à
désigner les outils, les applications et l’ensemble des contenus mis à disposition d’un élève
dans le but d’une formation pédagogique

Le principe étant de pouvoir accéder à des cours depuis un poste distant, les lieux
nécessaires au suivi d’un cursus de formation (classes, bibliothèques, université) n’existent
plus physiquement, ils sont remplacés par le système e-Learning.

11
Le e-Learning est le cœur du système de formation à distance, c’est lui qui fait le lien
entre les apprenants, les cursus, les tuteurs, les ressources et les contenus présent dans le
système.

L’apprenant, via une plate-forme, se verra attribuer un certain nombre de modules de


cours, d’exercices, d’évaluations qu’il devra effectuer en tenant compte d’une planification
établie.

Le formateur se charge de gérer les apprenants qu’il doit suivre. Ainsi il pourra leur
affecter des ressources à consulter, des cours à étudier, des évaluations afin de se rendre
compte de la bonne assimilation des contenus proposés.

La communication de tous ces acteurs se fait via internet.

3.2 Le Framework
Pendant longtemps, PHP a été décrié et critiqué par les «développeurs professionnels»
pour son côté rustique et simpliste: un langage pour les «développeurs du dimanche».
Pourtant, en dépit de ces critiques et de cette image maintenant datée, PHP est un langage qui
a su évoluer, se structurer, se professionnaliser. Tant et si bien que c'est aujourd'hui de loin le
langage dominant du Web. À lui seul, PHP motorise près de 70% des sites web dans le
monde. De nombreux sites à très fortes audiences sont motorisés par PHP.

3.2.1 Qu'est-ce qu'un Framework?


Le mot Framework provient de l'anglais frame, qui veut dire «cadre» en français, et
work, qui signifie «travail». Littéralement, c'est donc un cadre de travail. Concrètement, c'est
un ensemble de composants qui sert à créer les fondations, l'architecture et les grandes lignes
d'un logiciel. Il existe des centaines de Framework couvrant la plupart des langages de
programmation. Ils sont destinés au développement de sites web ou bien à la conception de
logiciels.

Un Framework est une boîte à outils conçue par au moins un développeur à destination
d'autres développeurs. Contrairement à certains scripts tels que WordPress, Dotclear ou
autres, un Framework n'est pas utilisable tel quel. Il n'est pas conçu pour les utilisateurs
finaux. Le développeur qui se sert d'un Framework a encore du travail à fournir.

3.2.2 Objectif d'un Framework

11
L'objectif premier d'un Framework est d'améliorer la productivité des développeurs
qui l'utilisent. Souvent organisé en différents composants, un Framework offre la possibilité
au développeur final d'utiliser tel ou tel composant pour lui faciliter le développement et ainsi
de se concentrer sur le plus important.

Il existe dans Symfony un composant qui gère les formulaires HTML: leur affichage,
leur validation, etc. Le développeur qui l'utilise se concentre sur l'essentiel dans son
application: chaque formulaire effectue une action et c'est cette action qui est importante, pas
les formulaires. Étendez ce principe à toute une application ou tout un site Internet et vous
comprenez l'intérêt d'un Framework! Autrement dit, le Framework s'occupe de la forme et
permet au développeur de se concentrer sur le fond.

3.2.3 Avantage du Framework


 Une communauté active qui utilise le Framework et qui contribue en retour;
 Une documentation de qualité et régulièrement mise à jour;
 Un code source maintenu par des développeurs attitrés;
 Un code qui respecte les standards de programmation;
 Un support à long terme garanti et des mises à jour qui ne cassent pas la compatibilité

3.3 Le SGBDR MySQL


Le besoin d’organiser les données, potentiellement de grandes quantités de données,
afin d’en optimiser la conservation et la restitution, a toujours été au cœur de l’informatique.

La façon dont nous nous représentons l’ordinateur est une métaphore du cerveau
humain. Sans le stock d’informations que constitue la mémoire humaine, il nous est
impossible de produire le moindre raisonnement, car ce dernier manipule des structures des
éléments connus qui proviennent de notre mémoire. Stocker et retrouver, voilà les défis de la
base de données. Ces deux éléments centraux se déclinent bien sûr en différentes sous-
fonctions importantes, comme assurer la sécurité ou se protéger des incohérences

3.3.1 Historique

L’histoire des bases de données remonte aux années 1960, avec l’apparition des bases
de données réseaux et des bases de données hiérarchiques. Dans les années 1980, ce sont les

11
bases de données «object-oriented» qui a fait leur apparition. Aujourd’hui, les bases de
données prédominantes sont les SQL, NoSQL et les bases de données Cloud.

Il est aussi possible de classer les bases de données en fonction de leur contenu:
bibliographique, textes, nombres ou images. Toutefois, en informatique, on classe
généralement les bases de données en fonction de leur approche organisationnelle. Il existe de
nombreux types de bases de données: relationnelle, Cloud, NoSQL.

FIGURE 4: CHRONOLOGIE DE L'ÉVOLUTION DE LA BADE DE DONNÉE

3.3.2 Modèle hiérarchique


Le modèle hiérarchique est historiquement la première forme de modélisation de
données sur un système informatique. Son développement commença dans les années 1950.
Les bases de données hiérarchiques comptent parmi les plus anciennes bases de données. Au
sein de cette catégorie, les enregistrements sont organisés dans une structure d’arborescence.
Chaque niveau d’enregistrements découle sur un ensemble de catégories plus petites. On
l’appelle «modèle hiérarchique» à cause de la direction des relations qui s’établissent
uniquement du parent vers les enfants. Une base de données hiérarchique est composée
d’enregistrements qui contiennent des champs et qui sont regroupés en types

11
d’enregistrements. Des relations sont créées entre types d’enregistrements parents et types
d’enregistrements fils, ce qui forme un arbre hiérarchique. La différence majeure entre ce
modèle et le modèle relationnel que nous connaissons maintenant est la limitation de l’arbre.
Il ne peut y avoir qu’un seul arbre et les relations ne peuvent se dessiner que du parent vers
l’enfant.

FIGURE 5 : SYSTÈME RELATIONNEL

3.3.3 MySQL
MySQL est à la fois le nom du SGBD et le nom de la société (qui se nomme en fait
MySQL AB, décrite sur http://www.mysql.com) dont le siège se trouve en Suède à Uppsala
compté une cinquantaine de kilomètres au nord de Stockholm. Selon leurs dires, leur serveur
de données, qui est écrit en C et C++, serait installé de façon opérationnelle sur plus de six
millions de sites. D’un point de vue coût, l’utilisation du SGBD sur des projets importants
(entre 250000€ et 500000€) ferait économiser 90% sur le prix des licences du serveur, 60%
sur les ressources système, 70% sur le prix du matériel, 50% sur les tâches d’administration et
de support.

Par analogie avec les systèmes d’exploitation, depuis 1999, MySQL connaît le succès
de Linux. Téléchargée près d’un million de fois en trois semaines (en octobre 2005), la
version production de MySQL doit sa popularité du fait de son caractère open source, de ses
fonctionnalités de plus en plus riches, de ses performances, de son ouverture à tous les
principaux langages du marché, de son fonctionnement sur les systèmes les plus courants (les
distributions classiques de Linux, Windows, MacOs, BSD, Novell et les dérivés d’Unix) et de
sa facilité d’utilisation pour des applications Web de taille moyenne.

11
Bref, la finalité de cette partie est basé sur la présentation des deux cadres d`étude et la
présentation du thème avec déjà un avant-gout du travail qui va être effectué et développé
dans ce mémoire. Le fonctionnement de ces deux organisations et la démonstration du thème
sont alors connue et qui est du moins surprenant de voir la grandeur des deux cadres.

Partie II : Etude du système

CHAPITRE 1: Présentation du système

11
1.1 Analyse de l’existant
Comme dans tout projet, avant de commencer la réalisation et avant même la
conception, on se doit d’analyser l’existant.

Les différentes cours informatique disponible au CenTIC-Mada sont encore en salle.


Mais, il y a des étudiants qui n’ont pas beaucoup de temps disponible demandent des cours
d’appui en ligne.

L’objectif du centre est de créer un Site Web E-Learning pour satisfaire les étudiants
qui ont besoin des formations à distance.

1.2 Planning prévisionnel


La planification du projet a pour objectifs de générer sa décomposition en activités et
tâches plus élémentaires ayant des interrelations minimales, et de produire une structure de
référence pour son pilotage et son suivi. Elle définit donc les tâches, le calendrier, les
ressources, l'allocation de ces ressources aux tâches et les procédures du projet. En effet, elle
assure que ceci sera livré dans le temps en accord avec les contraintes des acteurs.

Phases Détails Durées


Lancement Accueil et installation, découverte du 2 semaines
thème
Etude préliminaire Identification des acteurs et des 1semaine
messages
Conception du système Conception des diagrammes: classes, 2 semaines
cas d'utilisation
Réalisation Connaissance des outils et du langage 6 semaines
de programmation, développement
Mise en œuvre Vérification, validation 2 semaines

TABLEAU 6: PLANNING PRÉVISIONNEL GÉNÉRAL

11
CHAPITRE 2: Les technologies utilisées

2.1Le langage graphique UML2


2.1.1 Historique

11
UML est basé sur l’approche par objets. Cette dernière voit le jour bien avant UML
dans le domaine des langages de programmation. Simula, le tout premier langage à objets est
né dans les années 1960. Ce langage connaît de nombreux successeurs : Smalltalk, C++, Java
ou plus récemment C#.

Dans un langage de programmation, la description des objets est réalisée de façon


formelle avec une syntaxe rigoureuse. Cette syntaxe n’est pas lisible par des non
programmeurs et reste difficile à déchiffrer pour des programmeurs. À la différence des
machines, les humains préfèrent utiliser les langages graphiques pour représenter des
abstractions. Ils maîtrisent ce type de langage plus facilement et obtiennent une vue
d’ensemble d’un système en un temps beaucoup plus court. 

Danslesannées1980etaudébutdesannées1990,les notations graphiques se multiplient,


chacun utilisant bien souvent sa propre notation. En 1994, James Rumbaugh et GradyBooch
décident de se regrouper pour unifier leurs notations. Celles-ci provenaient de leurs
méthodes : OMT pour James Rumbaugh et méthode Booch pour GradyBooch. En 1995, Yvar
Jacobson décide de rejoindre l’équipe des "trois amigos". Cette équipe travaille alors au sein
de Rational Software. 

La version 1.0 d’UML est publiée en 1997. Le travail d’évolution de la notation est
devenu trop important pour trois personnes. Les trois amigos demandent l’aide de l’Object
Management Group (OMG), un consortium de plus de 800 sociétés et universités travaillant
dans le domaine des technologies de l’objet. La notation UML est adoptée par l’OMG en
novembre 1997 dans sa version 1.1. L’OMG crée en son sein une Task Force chargée de
l’évolution d’UML

Depuis cette époque, cette Task Force a mis à jour UML plusieurs fois. En mars 2003, 
la version 1.5 voit le jour. Cette dernière offre la possibilité de décrire des actions grâce à une
extension d’UML appelée Action Semantics ou sémantique des actions dont l’étude dépasse
le cadre de cet ouvrage.

La version d’UML dont traite cet ouvrage est la version 2.1 qui est désormais sous sa
forme définitive. Elle constitue la première évolution majeure depuis la sortie d’UML en
1997. De nouveaux diagrammes ont été ajoutés et les diagrammes existants ont été enrichis de
nouvelles constructions. 

2.1.2 Les huit (8) diagrammes principaux

11
 Cas d’utilisation
 Statiques : Classes
 Dynamiques : Etats, Collaborations, Séquences, Activités
 Réalisation : Composants, Déploiements

2.2 Les outils


2.2.1 WampServer

WampServer est une plateforme de développement web. Elle comprend un serveur


web Apache, un SGDB MySQL, et un interpréteur de script permettant de faire fonctionner
localement (sans se connecter à un serveur externe) des scripts PHP. Concernant
l’administration des bases de données MySQL, elle offre deux possibilités : en mode
graphique avec PHPMyAdmin ou en mode console avec la console MySQL. En général,
WampServer permet de faire tourner un serveur de développement des applications
développées en PHP/MySQL.

La grande nouveauté de WampServer2 réside dans la possibilité d’y installer et


d’utiliser n’importe quelle version de PHP, Apache ou MySQL en un clic.

FIGURE6 : INTERFACE GRAPHIQUE DE PHPMYADMIN DE WAMPSERVER

11
2.2.2 Sublimetext 

En 2007, son créateur, Jon Skinner, quitta son travail chez Google pour
poursuivre un de ses rêves : créer un meilleur éditeur de texte. Il se donna trois
principes pour ce logiciel:

 Discret, interface minimum : on doit pouvoir se focaliser sur le texte et non


une myriade de barres d'outils ;
 Ne pas cacher le texte par des fenêtres ;
 Utiliser toute la place possible : plein écran, multi-écrans, édition de
fichiers côte à côte devraient être possibles.

Sublimetext intègre la plupart des fonctionnalités de base d'un éditeur de texte,


dont la coloration syntaxique personnalisable, l’auto complétion, un système de
plugins… L'éditeur propose cependant des fonctions plus avancées. Le logiciel
propose également d'importer des packages (pour ajouter des langages ou bien des
fonctionnalités de Sublimetext). La version 3 du logiciel propose directement
d'installer Package Control pour ajouter certains thèmes.

2.2.3 Librairies Bootstrap

Bootstrap est une collection d'outils utile à la création du design (graphisme, animation
et interactions avec la page dans le navigateur ... etc. ...) de sites et d'applications web. C'est
un ensemble qui contient des codes HTML et CSS, des formulaires, boutons, outils de
navigation et autres éléments interactifs, ainsi que des extensions JavaScript en option. C'est
l'un des projets les plus populaires sur la plate-forme de gestion de développement Git Hub.

Bootstrap est compatible avec les dernières versions des navigateurs majeurs, mais
peut fonctionner de manière dégradée sur des navigateurs plus anciens.

Depuis la version 2, la bibliothèque adopte la conception de sites web permettant aux


projets utilisant Bootstrap de s'adapter dynamiquement au format des supports depuis lesquels
ils sont accédés (PC, tablette, Smartphone).

Bootstrap fournit une feuille de style CSS qui contient des définitions de base pour
tous les composants HTML, ce qui permet de disposer d'une apparence uniforme pour les

11
textes, tableaux et les éléments de formulaires. Il fournit également des éléments graphiques
au format standardisé : boutons, libellés, icônes, miniatures, barres de progression…

Cet outil va donc accélérer la réalisation du site au niveau de l’esthétique et du style de


chaque page web. Ainsi on pourra se concentrer sur les fonctionnalités

2.3 Framework Symfony3


2.3.1 L'architecture des fichiers
 Le répertoire /app

Ce répertoire contient tout ce qui concerne le site Internet... sauf son code source. Ce
sont des fichiers qui concernent l'intégralité du site, contrairement aux fichiers de code source
qui sont découpés par fonctionnalités. Dans Symfony, un projet de site Internet est une
application, simple question de vocabulaire. Le répertoire /app est donc le raccourci pour «
application ».

 Le répertoire /bin

Ce répertoire contient tous les exécutables pendant le développement

 Le répertoire /tests

Ce répertoire contient tous les tests de l’application. Tester une application est
indispensable, mais la manière d'écrire les tests ne dépend pas du Framework qu’on utilise.

 Le répertoire /var

Il contient tout ce que Symfony va écrire durant son activité : les logs, le cache et
d'autres fichiers nécessaires à son bon fonctionnement.

 Le répertoire /vendor

Il contient toutes les bibliothèques externes de l’application. Une bibliothèque est une
sorte de boîte noire qui remplit une fonction bien précise et dont on peut se servir dans le
code. Par exemple, la bibliothèque SwiftMailer permet d'envoyer des e-mails. On ne sait pas
comment elle fonctionne (principe de la boîte noire), mais on sait comment s'en servir : on
pourra donc envoyer des e-mails très facilement, juste en apprenant rapidement à utiliser la
bibliothèque.

11
 Le répertoire /web

Il contient tous les fichiers destinés des visiteurs : images, fichiers CSS et JavaScript,
etc. Il contient également le contrôleur frontal (app .PHP).

2.3.2 Le contrôleur frontal


 Définition

Le contrôleur frontal (front controller en anglais) est le point d'entrée de l’application.


C'est le fichier par lequel passent toutes les pages. On doit connaître le principe d'index.php et
des pseudo-frames (avec des URL du type index.php? page=blog) ; eh bien, cet index.php est
un contrôleur frontal. Dans Symfony, le contrôleur frontal se situe dans le répertoire /web ; il
s'agit de app.php ou app_dev.php.

 Deux environnements de travail

L'objectif est de répondre au mieux suivant la personne qui visite le site.

- Un développeur a besoin d'informations sur l'exécution de la page pour l'aider à


développer. En cas d'erreur, il veut tous les détails pour déboguer facilement. Il n'a pas
besoin de rapidité.
- Un visiteur normal n'a pas besoin d'informations particulières sur la page. En cas
d'erreur, l'origine de celle-ci ne l'intéresse pas du tout ; il veut juste retourner d'où il
vient. En revanche, il veut que le site soit le plus rapide possible à charger.
- L'environnement de développement, appelé dev, est accessible en utilisant le
contrôleur frontal app_dev. php. C'est celui qu'on utilisera toujours pour développer.
- L'environnement de production, appelé prod, est accessible en utilisant le contrôleur
frontal app.php.
2.3.3 Architecture MVC

Sachez que Symfony respecte bien entendu cette architecture MVC.

MVC signifie « Modèle/Vue/Contrôleur ». C'est un découpage très répandu pour


développer les sites Internet, car il sépare les couches selon leur logique propre.

 Le Contrôleur (ou Controller') génère la réponse à la requête HTTP demandée par le


visiteur. Il est la couche qui se charge d'analyser et de traiter la requête de l'utilisateur.
Le contrôleur contient la logique de notre site Internet et va se contenter « d'utiliser »

11
les autres composants : les modèles et les vues. Concrètement, un contrôleur va
récupérer, par exemple, les informations sur l'utilisateur courant, vérifier qu'il a le
droit de modifier tel article, récupérer cet article et demander la page du formulaire
d'édition de l'article.
 Le Modèle (ou Model) gère les données et son contenu. On reprend l'exemple de
l'article. Lorsqu’on dit « le contrôleur récupère l'article », il va en fait faire appel au
modèle Article et lui dire : « donne-moi l'article portant l'id 5 ». C'est le modèle qui
sait comment récupérer cet article, généralement via une requête au serveur SQL, mais
ce pourrait être depuis un fichier texte ou ce que vous voulez. Au final, il permet au
contrôleur de manipuler les articles, mais sans savoir comment les articles sont
stockés, gérés, etc. C'est une couche d'abstraction
 La Vue (ou View) sert à afficher les pages. On reprend encore l'exemple de l'article.
Ce n'est pas le contrôleur qui affiche le formulaire ; il ne fait qu'appeler la bonne vue.
Si nous avons une vue Formulaire, les balises HTML du formulaire d'édition de
l'article y sont et le contrôleur ne fait qu'afficher cette vue sans savoir vraiment ce qu'il
y a dedans. En pratique, c'est le designer d'un projet qui travaille sur les vues. Séparer
vues et contrôleurs permet aux designers et développeurs PHP de collaborer sans
empiéter sur le travail des autres.
2.3.4 Parcours d'une requête dans Symfony

En le parcourant avec des mots, voici ce que cela donne :

 Le visiteur demande la page /platform ;


 Le contrôleur frontal reçoit la requête, charge le kernel et la lui transmet ;
 Le kernel demande au routeur quel contrôleur exécuter pour l'URL /platform. Le
routeur répond qu'il faut exécuter le contrôleur OCPlatform : Advert. Le routeur
est un composant Symfony qui fait la correspondance entre URL et contrôleurs ;
 Le kernel exécute donc ce contrôleur, qui demande au modèle Annonce la liste des
annonces, puis la donne à la vue ListeAnnonces pour qu'elle construise la page
HTML et la lui retourne. Après avoir fait cela, le contrôleur envoie au visiteur la
page HTML complète.

11
On trouvera sur ce schéma les points où on interviendra

11
FIGURE7 : PARCOURS COMPLET D'UNE REQUÊTE DANS SYMFONY

2.3.5 Les langages appliqués aux pages web à réaliser


 HTML (HyperText Markup Language)

L’HyperText Markup Language, généralement abrégé HTML, est le format de


données conçu pour représenter les pages web. C’est un langage de balisage
(utilisation de balises dans la programmation) permettant d’écrire de l’hypertexte, d’où
son nom. HTML permet également de structurer sémantiquement et logiquement et de
mettre en forme le contenu des pages, d’inclure des ressources multimédias dont des
images, des formulaires de saisie, et des programmes informatiques. Il permet de créer
des documents interopérables avec des équipements très variés de manière conforme
aux exigences de l’accessibilité du web. Il est souvent utilisé conjointement avec des
langages de programmation (JavaScript) et des formats de présentation (feuilles de
style en cascade).

 PHP (HyperText Preprocessor)

HyperText Preprocessor, plus connu sous son sigle PHP, est un langage de
programmation libre, principalement utilisé pour produire des pages Web dynamiques
via un serveur HTTP, mais pouvant également fonctionner comme n'importe quel
langage interprété de façon locale. PHP est un langage impératif orienté objet.

PHP a permis de créer un grand nombre de sites web célèbres, comme


Facebook, Wikipédia, etc. Il est considéré comme la base de la création des sites
Internet dits dynamiques mais également des applications web.

Ainsi, pour rendre dynamique une application web, PHP est indispensable. De
plus, Symfony (notre outil principal) est fait généralement en PHP.

A partir de la version 5, PHP supporte la programmation orientée objet (POO).

 SQL (Structured Query Language)

11
SQL (sigle de Structured Query Language, en français langage de requête
structurée) est un langage informatique normalisé servant à exploiter des bases de
données relationnelles. La partie langage de manipulation des données de SQL permet
de rechercher, d'ajouter, de modifier ou de supprimer des données dans les bases de
données relationnelles.

Outre le langage de manipulation des données, la partie langage de définition


des données permet de créer et de modifier l'organisation des données dans la base de
données, la partie langage de contrôle de transaction permet de commencer et de
terminer des transactions, et la partie langage de contrôle des données permet
d'autoriser ou d'interdire l'accès à certaines données à certaines personnes.

Créé en 1974, normalisé depuis 1986, le langage est reconnu par la grande
majorité des systèmes de gestion de bases de données relationnelles (abrégé SGBDR)
du marché. SQL fait partie de la même famille que les langages SEQUEL (dont il est
le descendant), QUEL ou QBE (Zloof).

Evidemment, on va l’utiliser dans la gestion de la base de données du site web


concerné. Passons à un autre langage : JavaScript avec sa librairie « jQuery ».

 JavaScript et la librairie JQuery


- JavaScript

JavaScript est un langage de programmation de scripts principalement employé


dans les pages web interactives mais aussi pour les serveurs avec l'utilisation (par
exemple) de Node.JS. C'est un langage orienté objet à prototype, c'est-à-dire que les
bases du langage et ses principales interfaces sont fournies par des objets qui ne sont
pas des instances de classes, mais qui sont chacun équipés de constructeurs permettant
de créer leurs propriétés, et notamment une propriété de prototypage qui permet d'en
créer des objets héritiers personnalisés. En outre, les fonctions sont des objets de
première classe.

JavaScript a été créé en 1995 par Brendan Eich. Il a été standardisé sous le nom
d'ECMAScript en juin 1997 par Ecma International dans le standard ECMA-262. Le
standard ECMA-262 en est actuellement à sa 7e édition. JavaScript n'est depuis qu'une
implémentation d'ECMAScript, celle mise en œuvre par la fondation Mozilla.

11
L'implémentation d'ECMAScript par Microsoft se nomme JScript, tandis que celle
d'Adobe Systems se nomme ActionScript.

Le propos de JavaScript est de manipuler de façon simple des objets, au sens


informatique, fournis par une application hôte qui est dans notre cas, le navigateur web
(Mozilla Firefox)

- JQuery

C’est une bibliothèque JavaScript libre créée pour faciliter l'écriture de scripts
côté client dans le code HTML des pages web. La première version est lancée en
janvier 2006 par John Resig.

Il contient les fonctionnalités suivantes :

 Parcours et modification du DOM


 Evénements
 Effets visuels et animations
 Manipulations des feuilles de style en cascade (ajout/suppression des classes,
d'attributs…)
 Ajax
 Plugins
 Utilitaires (version du navigateur web…)

Depuis sa création en 2006 et notamment à cause de la complexification


croissante des interfaces Web, JQuery a connu un large succès auprès des
développeurs Web et son apprentissage est aujourd'hui un des fondamentaux de la
formation aux technologies du Web. Il est à l'heure actuelle est le Framework font-end
(partie visible par le client) le plus utilisé au monde (plus de la moitié des sites Internet
en ligne intègrent JQuery).

 CSS (Cascading Style Sheet)

Les feuilles de style en cascade, généralement appelées CSS de l'anglais


Cascading Style Sheets, forment un langage informatique qui décrit la présentation des
documents HTML et XML. Les standards définissant CSS sont publiés par le World
Wide Web Consortium (W3C). Introduit au milieu des années 1990, CSS devient

11
couramment utilisé dans la conception de sites web et bien pris en charge par les
navigateurs web dans les années 2000.

Le concept de feuille de style est présent dès l'origine du World Wide Web : le
premier navigateur web (« World Wide Web », renommé par la suite « Nexus »)
permet de mettre en forme les documents à l'aide de ce qui serait aujourd'hui considéré
comme une « feuille de style utilisateur ». De même, les navigateurs Viola en 1992 et
Harmonyen 1993 recourent à un mécanisme similaire permettant de déterminer le
rendu des polices de caractères, des couleurs ou de l'alignement du texte.

Les origines des CSS sont liées à trois possibilités majeures :

 HTML est-il un langage de structuration ou un langage mixte de mise en forme et


de structuration ?
 Les choix de présentation de l'auteur doivent-ils avoir la primauté sur ceux de
l'utilisateur ?
 La réponse aux besoins est-elle un langage de description de la mise en forme, ou
un langage de transformation ?
 Twig

Twig est un moteur de templates pour le langage de programmation PHP,


utilisé par défaut par le frameworkSymfony. Il aurait été inspiré par Jinja, moteur de
template Python.

Les templates, ou vues, sont très intéressants. Leur objectif est de séparer le
code PHP du code HTML. Ainsi, lorsque vous faites du PHP, vous n'avez pas 100
balises HTML qui gênent la lecture de votre code PHP. De même, lorsque votre
designer fait du HTML, il n'a pas à subir votre code barbare PHP auquel il ne
comprend rien.

L’intérêt des templates nous permettre de séparer le code PHP du code


HTML/XML/Text, etc. Seulement, pour faire du HTML de présentation, on a toujours
besoin d'un peu de code dynamique : faire une boucle pour afficher tous les articles
d'un blog, créer des conditions pour afficher un menu différent pour les utilisateurs
authentifiés ou non, etc. Pour faciliter ce code dynamique dans les templates, le
moteur de templates Twig offre son pseudo-langage à lui. Ce n'est pas du PHP, mais
c'est plus adapté et voici pourquoi :

11
 La syntaxe est plus concise et plus claire. Rappelez-vous, pour afficher une
variable, {{ mavar }} suffit, alors qu'en PHP il faudrait faire <?php echo $mavar; ?
>.
 Il y a quelques fonctionnalités en plus, comme l'héritage de templates. Cela serait
bien entendu possible en PHP, mais il faudrait coder soi-même le système et cela
ne serait pas aussi esthétique
 Il sécurise les variables automatiquement : plus besoin de se soucier de
htmlentities(), addslashes(), etc ….

11
CHAPITRE 3: Sécurisation de l’application

3.1 Introduction :
Dès que les hommes apprirent à communiquer, ils durent trouver des moyens assurant la
confidentialité d’une partie de leurs communications, ce qui nous amène à savoir que la
fonction première de la cryptographie est de cacher le sens d’un message à tous ceux qui ne

11
sont pas autorisés à le connaitre. Donc, on peut dire que l’origine de la cryptographie remonte
sans doute aux origines de l’homme.
En effet, le mot cryptographie est un terme générique désignant l’ensemble des techniques
permettant de chiffrer des messages, c’est-à-dire de les rendre inintelligibles sans une action
spécifique. En dépit de l’évolution des moyens de communication depuis l’antiquité, il a
toujours été difficile de garantir la sécurité du canal par lequel transite un message. Un
cavalier transportant un rapport sur la position d’une armée peut être intercepté par des
éclaireurs ennemis ; un employé du télégraphe transmettant des consignes d’investissements
boursiers peut être à la solde d’un actionnaire concurrent ; un ordre militaire transmis par les
ondes radios peut être capté par n’importe quel récepteur réglé sur la bonne fréquence ; un
courrier qui transite sur Internet peut être lu par n’importe quel ordinateur sur la chaîne reliant
l’expéditeur au destinataire. Aussi, la problématique d’établir des communications sécurisées
en utilisant un médium non sécurisé a toujours été d’importance en vue d’applications
militaires, financières, ou simplement du respect de la vie privée.
Un cryptosystème fonctionne de la façon suivante :

FIGURE 8 : FONCTIONNEMENT D’UN CRYPTOSYSTÈME

3.2La cryptographie :
3.2.1 Quelques définitions [10]

La cryptologie est la science des messages secrets. Longtemps restreinte aux


usagesdiplomatiques et militaires, elle est maintenant une discipline scientifique à part entière,

11
dontl’objet est l’´etude des méthodes permettant d’assurer les services d’intégrité,
d’authenticité et de confidentialité dans les systèmes d’information et de communication.
La cryptographie traditionnelle est l’étude des méthodes consistant à transmettre des données
de manière confidentielle. Afin de protéger un message, on lui applique une transformation
qui le rend incompréhensible ; c’est ce qu’on appelle le chiffrement, qui, à partir d’un texte
en clair, donne un texte chiffré ou cryptogramme. Inversement, le déchiffrement est
l’action qui permet de reconstruire le texte en clair à partir du texte chiffré. Dans la
cryptographie moderne, les transformations en question sont des fonctions mathématiques,
appelés algorithmescryptographiques, qui dépendent d’un paramètre appelé clef.
On appelle texte en clair, les données lisibles et compréhensibles sans intervention
spécifique. Le cryptage ou chiffrement est la méthode permettant de dissimuler du texte en
clair enmasquant son contenu. Cela consiste à transformer un texte normal en un charabia
inintelligible appelé texte chiffré. Cette opération permet de s’assurer que seules les personnes
auxquelles les informations sont destinées pourront y accéder. Le processus inverse de
transformation du texte chiffré vers le texte d’origine est appelé le décryptage.
Coder : transformer un texte, une information en remplaçant les mots dans une écriture faite
de signesprédéfinis.
Un cryptosystème est un système matériel ou logiciel effectuant de la cryptographie, il peut
contenir un ou plusieurs algorithmes de chiffrement.
Clef: on appelle clé une valeur utilisée dans un algorithme de cryptographie, afin de chiffrer
un texte. Les clés doivent être stockées de manière sécurisée et demanière à ce que seul leur
propriétaire soit en mesure de les atteindre et de les utiliser.
La cryptographie est donc traditionnellement utilisée pour dissimuler des messages aux yeux
de certaines personnes. Cet intérêt est aujourd’hui d’autant plus grand que les ordinateurs et le
réseau Internet se sont considérablement développés. Elle est désormais indispensable pour
préserver la sécurité et la confidentialité des données, mais aussi leur intégrité et leur
authenticité.
Un service d’intégrité garantit que le contenu d’une communication ou d’un fichier n’a pas
été modifié. Par exemple, on peut souhaiter à vérifier qu’aucun changement du contenu d’un
disque dur n’a eu lieu ; des produits commerciaux, mettant en jeu des méthodes
cryptologiques sont disponibles (voir notamment) à cet effet.
Un service d’authenticité garantit l’identité d’une entité donnée ou l’origine d’une
communicationou d’un fichier. Lorsqu’il s’agit d’un fichier et que l’entité qui l’a créé est la
seule à avoir pu apporter la garantie d’authenticité, en évidence on parle de non-répudiation.

11
Le service denon-répudiation est réalisé par une signature numérique. Une définition précise
sera donneé plus loin ; on s’intéressera ici sur la loi du 20 mars 2000 qui a fait passer ce
conceptdans la vie sociale.
Un service de confidentialité garantit que le contenu d’une communication ou d’un
fichiern’est pas accessible aux tiers. Ainsi, la cryptologiese partage en deux sous-disciplines
également importantes : la cryptographie qui fait l’objet de proposer des méthodes pour
assurer les services définis plus hautet la cryptanalyse qui recherche des failles dans les
mécanismes ainsi proposés.
Recherche exhaustive de la clef,cette technique consiste tout simplement à essayer toutes les
clefs possibles jusqu'à ce qu'on trouve la bonne. Pour les chiffres à alphabet décalé, comme le
chiffre de César, cette recherche est envisageable puisqu'il y a peu de possibilités.
3.2.2 Quelques repères historiques [12] [11] [10]

FIGURE 9 : LES CLASSES DE LA CRYPTOGRAPHIE

– La cryptographie classique

Les premiers algorithmes utilisés pour le chiffrement d'une information étaient assez
rudimentaires dans leur ensemble et ils sont trop simples pour offrir la moindre sécurité. Pour
cacher la substance d’un texte, ils utilisent la substitution de caractères par d'autres ou les

11
transposer dans des ordres différents. De ce fait, la confidentialité de l'algorithme de
chiffrement était donc la pierre angulaire de ce système pour éviter un décryptage rapide. On
appelle généralement cette classe de méthodes : le chiffrement à usage restreint.
Exemple : chiffrement par substitution, chiffrement par transposition
– La cryptographie moderne
La cryptographie entre dans son ère moderne avec l'utilisation intensive des ordinateurs à
partir des années septante. Vue la nécessité croissante de sécuriser les données dans tous les
domaines (économique, industriel, informatique,...etc.) …. La cryptographie est appelée à
devenir une technique de plus en plus fondamentale pour la protection des informations
possédées et/ou échangées par des individus ou des organisations. Dans la cryptographie
moderne, on utilise aussi des problèmes mathématiques que l'on ne sait pas (encore) résoudre,
par exemple factoriser des grands nombres (chiffre RSA).
La cryptographie moderne se scinde en deux parties nettement différenciées :
 La cryptographie à clef secrète, ou encore appelée symétrique,
 La cryptographie à clef publique, dite également asymétrique.

– Cryptographie quantique

La cryptographie à base d'algorithmes aura toujours des faiblesses. Même si la cryptanalyse


bloque devant un algorithme, la force brute pourra toujours décrypter n'importe quel code si
on lui donne assez de temps. Même avec le plus solide des chiffrages, le contenu du message
peut être subtilisé et dupliqué. Les clés, quant à elles, peuvent être volées en chemin ou
présenter des faiblesses qui les rendent prévisibles.
Si maintenant on base notre cryptographie, non pas sur un algorithme mathématique, mais sur
des lois de la physique quantique, il n'y plus de force brute qui peut briser un code ici. Le
cryptage ne se trouve pas dans des formules, mais dans des photons, ainsi tout le monde peut
accéder à des formules, mais pas tout le monde peut accéder aux photons sans que le message
devienne inutile. De ce fait, l’information n’est plus sécurisée par des subterfuges
mathématiques, mais plutôt par des lois fondamentales de physique. Au de-là, la
cryptographie quantique a vu le jour.
3.2.3 Cryptographie moderne

o Chiffrement et déchiffrement [2] [10]

11
La cryptographie moderne est principalement liée aux services de confidentialité. Elle réalise
sur les données m une transformation constituée par une formule C = Ek(m), par
l’intermédiaire d’un algorithme de chiffrement E. Cet algorithme prend en entrée le message
clair m et un paramètre secret k, qu’on appelle la clé. Le message m varie dans un ensemble
M et la clé k dans un ensemble K. La restauration du texte clair à partir du chiffré ou
cryptogramme C se fait par un algorithme de déchiffrement Dk, prenant en entrée le chiffré et
la même clé.
On doit avoir la formule suivante :Dk(Ek(m)) = m. En général, le chiffré prend sa valeur dans
le même espaceM et l’on a aussi Ek(Dk(c)) = c, c’est `a dire que les algorithmes Ek et
Dkréalisent unepermutation de M.
La distinction entre l’algorithme et la clé s’est établie il y a fort longtemps, notamment dans
les travaux du cryptologue Auguste Kerckhoffs. Ce dernier a en effet su reconnaitre que
l’algorithme de chiffrement n’exigeait pas le secret, dans la mesure auquelle il risquait de
toute façon de passer aux mains de l’ennemi. La cryptologie moderne recommande même des
méthodes de chiffrement totalement explicites de manière à ce qu’elles soient évaluées et
validées par un débat ouvert entre experts. Du coup, une convention secrète entre entités qui
souhaitent communiquer de façon chiffrée se limite à l’échange d’une clé k.
o Décryptage [10]

L’opération qui consiste à calculer le clair m à partir du chiffré C = Ek(m), mais sans la
connaissance de la clé k est appelée décryptement. La confidentialité est assurée si cette
opération est impossible. On distingue divers scénarios possibles d’attaque
– les attaques à chiffré seul, où l’adversaire dispose d’un certain nombre de
chiffrésEk(mi) ;
– les attaques à clair connu, où l’adversaire dispose d’un certain nombre de
chiffrésEk(mi) et des clairs correspondants mi ;
– les attaques à clair choisi, où l’adversaire dispose d’un certain nombre de
chiffrésEk(mi) correspondant à des clairs de son choix mi ; si de plus chaque message mi est
défini en fonction des chiffrés obtenus antérieurement, on parle d’attaque à clair choisi
adaptative.
Le lecteur pourra définir d’autres variantes, comme l’attaque à chiffré choisi. Le but de
l’attaque est la découverte de la clé ou le décryptement d’un chiffré C, correspondant à un
clair dont on ne dispose pas. Les attaques à chiffré seul sont les plus difficiles, néanmoins
l’adversaire dispose en général d’informations statistiques sur le clair.

11
o Type de cryptosystème actuel [14] [15]

Il existe deux grandes familles d’algorithmes cryptographiques à base de clefs actuellement:


les algorithmes à clef privé ou algorithmes symétriques, et les algorithmes à clef
publique ou algorithmes asymétriques.
Un bon cryptosystème doit permettre un chiffrement et un déchiffrement rapide, tout en
interdisant toute possibilité de décryptage. Pour alléger les charges en mémoire informatique,
on préfère aussi que les clés soient de petite taille.
o Cryptographie à clefs privés ou secrète [19] [24]

La cryptographie à clefs privées, appelée aussi cryptographie symétrique est utilisée depuis
déjà plusieurs siècles. C’est l’approche la plus authentique du chiffrement de données et
mathématiquement la moins problématique. La clé de chiffrement peut être calculée à partir
de la clé de déchiffrement, et le destinataire doit se mettre d’accord préalablement sur une clé
qui doit être gardée secrète car la sécurité d’un tel algorithme repose sur cette clé.
Le chiffrement à clé publique et le chiffrement symétrique présentent chacun des avantages et
des inconvénients. Par exemple, le temps de chiffrement et déchiffrement de la cryptographie
à clé publique est supérieur à celui de la cryptographie symétrique. Un des problèmes
principaux du chiffrement symétrique est l’échange préalable de la clé secrète : c’est la
transmission de cette clé entre les intervenants qui représente la faiblesse inhérente au
système. S’ils se trouvent à des emplacements géographiques différents, ils devront faire
confiance à une tierce personne ou un moyen de communication sécurisé. Toute personne
interceptant la clé lors d’un transfert peut ensuite lire, modifier et falsifier toutes les
informations cryptées ou authentifiées avec cette clé.
Le chiffrement à clé publique peut être préféré pour générer de petites séquences comme des
signatures ou des clés secrètes pour le chiffrement symétrique. Le chiffrement symétrique
peut être préférer pour chiffrer des grandes quantités de données.
La taille des clés utilisées varie selon le besoin. Elles font en standard 64 ou 128 bits.

11
FIGURE 10 : PRINCIPE DU CHIFFREMENT À CLÉ SECRÈTE

Les principaux types de cryptosystèmes à clefs privés utilisés aujourd’hui se répartissent en


deux grandes catégories : les cryptosystèmes par flots et les cryptosystèmes par blocs.
De la norme de cryptage de données DES au code secret de Jules César, la distribution des
clés reste le problème majeur du cryptage conventionnel (Autrement dit, comment faire
parvenir la clé à son destinataire sans qu’aucune personne ne l’intercepte ?). Les moyens à
déployer pour garantir la distribution sécurisée des clés entre les correspondants sont très
onéreux, ce qui constitue un inconvénient supplémentaire.
Les principaux algorithmes à clé privée utilisés actuellement sont : Blowfish, DES / 3DES,
IDEA, RC2, RC5, RC6, Rijndael(AES).

o Cryptosystèmes par flots ou en continu (Stream cipher) :

Dans un cryptosystème par flots, le cryptage des messages se fait de caractère à caractère ou
bit à bit au moyen de substitutions de type César générées aléatoirement : la taille de la clef
est donc égale à la taille du message.
La fonction de chiffrement est la même pour chaque bit, mais elle dépend d’une cléK k qui
varie dans le temps, dite dynamique. La génération de la clé dynamique dépend d’une clé
secrète  dite statique.
Dans un schéma de chiffrement par flot, lorsqu’Alice et Bob veulent communiquer de façon
sécurisée, ils doivent se rencontrer préalablement et secrètement pour se mettre d’accord sur
la clé secrète  qu’ils partagent et qu’ils vont employer lors de la génération de Kk. Quelques
temps plus tard, quand Alice souhaite envoyer un message mkà Bob, elle transforme le
message mktexte chiffré ck= e (Kk, mk), où elle représente une fonction de chiffrement. Elle
envoie le texte chiffré ckà Bob par l’intermédiaire d’un canal qui n’est pas forcement sécurisé.

De son côté, Bob reçoit le texte chiffré ck et calcule mk= d (Kk, ck) où d est une fonction de
déchiffrement. Ainsi, Bob récupère le message initial mk. Ce principe est illustré sur la
figure3.4suivante :

11
FIGURE 11 : CHIFFREMENT PAR FLOT

Un exemple de chiffrement par flot, proposé par Vernam en 1917, est le masque jetable
(« one-time pad »), aussi appelé chiffre de Vernam. Dans ce schéma, le texte chiffré c k est le
résultat d’une combinaison du texte clair mk avec la clé Kk, de même taille, par un OU
exclusif (XOR) :

ck=mkKk (3.01)
A partir du texte chiffré, le texte clair peut être retrouvé par l’opération inverse :
mk= ckKk (3.02)

Cependant, cela n’est valable que si plusieurs conditions sont vérifiées :

– La clé Kkdoit être aussi longue que le message clair ;


– La clé Kk doit être une chaîne de bits parfaitement aléatoire ;
– La clé Kk ne doit être utilisée qu’une fois pour chiffrer les informations
claires mk, d’où le nom de masque jetable. De plus, le flot de clés Kkest
généré aléatoire et indépendant des flots passés.

Ces trois conditions font du chiffrement de Vernam une méthode difficile à utiliser en
pratique. 

Dans le chiffrement par flot, il existe deux manières différentes de synchroniser les
générateurs de clé afin de récupérer le message original. La première est appelée chiffrement
par flot synchrone et la seconde est appelée chiffrement par flot autosynchrone.

 Chiffrement par flot synchrone

11
Dans un schéma de chiffrement par flot synchrone, l’émetteur est donné par :

K k =f θ ( K k−1)
{Ck =e (K k , mk )
(3.03)

Où f θ  est une fonction,  la clé statique, Kk la clé dynamique, mkle texte clair et Ck le texte
chiffré. La clé dynamique Kk est générée par une dynamique interne f θ  qui ne dépend ni du
texte clair mk, ni du texte chiffré Ck. Le récepteur est donné par :

K k =f θ^ ( K
^ ^ k−1 )
{m
^ k =d ( K^ k , C k)
(3.04)

FIGURE 12 : CHIFFREMENT PAR FLOT SYNCHRONE

La récupération du texte clair nécessite une synchronisation des séquences des clés
dynamiques à l’émission et à la réception. La fonction de chiffrement d est telle que m
^ k = mk si
^
K k = Kk. Le flot de clés étant issus de récurrences autonomes, les générateurs de clés doivent
être initialisés de part et d’autre de façon identique. La clé statique  représente la condition
initiale K0. Si, pour une raison quelconque la synchronisation est perdue durant la
transmission, l’émetteur et le récepteur doivent être réinitialisés à la même valeur pour
resynchroniser leur transmission.

 Chiffrement par flot autosynchrone

Dans un schéma de déchiffrement par flot autosynchrone, l’émetteur est donné par :

¿ (3.05)

11
Où fest une fonction paramétrée par la clé statique, qui génère le flot de clés Kk. A l’inverse
du chiffrement par flot synchrone, Kk dépend seulement des valeurs passées du texte chiffré
Ck. Le récepteur est donné par :

K k =f θ^ ( K k−1 , … , K k− j )
^
{ m
^ k =d ( ^ K k , Ck )
(3.06)

FIGURE 13 : CHIFFREMENT PAR FLOT AUTOSYNCHRONE

Si un symbole du texte chiffré est perdu ou est erroné, les j clés Kk suivantes seront calculées
de façon erronée par le récepteur, après quoi les clés suivantes ^
K k seront à nouveau correctes.

Comme pour le chiffrement par flot synchrone, la récupération du texte clair nécessite la
synchronisation des séquences des clés dynamiques à l’émission et à la réception, et la
fonction de déchiffrement telle que m
^ k = mksi ^
K k = Kk. A l’inverse du chiffrement par flot
synchrone, les séquences des clés dynamiques se synchronisent automatiquement et  est un
paramètre de la dynamique f.

Voici quelques exemples de chiffrement par flot.

– RC4 (utilisé notamment par le protocole WEP du Wi-Fi)


– E0 (utilisé par le protocole Bluetooth)
– A5/1, A5/2, A5/3 (utilisé dans les téléphones mobiles de type GSM pour
chiffrer la communication par radio entre le mobile et l'antenne-relais la
plus proche)

o Cryptosystèmes par blocs :

11
Dans un schéma de chiffrement par blocs, le message est divisé en blocs de bits, de longueur
fixe d’où chaque bloc est chiffré l’un après l’autre. Le chiffrement peut être effectué par
substitutions (les bits d’un bloc sont substitués avec d’autres bits) et par transpositions (les
bits d’un bloc sont permutés entre eux). La substitution permet d’ajouter de la confusion,
c'est-à-dire de rendre la relation entre le message et le texte chiffré aussi complexe que
possible. La transposition permet d’ajouter de la diffusion, c'est-à-dire de réarranger les bits
du message afin d’éviter que toute redondance dans le message ne se retrouve dans le texte
chiffré.

Le principe général d’un chiffrement itératif par blocs est le suivant : pour chaque bloc, on
itère r fois une fonction interne F ; à chacun des r tours, la fonction F est paramétrée par une
clef Ki (1≤ i ≤ r ), et la fonction du tour i peut être notée F Ki . Comme on veut que le
chiffrement soit inversible (pour pouvoir déchiffrer), il faut que les fonctions F Ki soient
bijectives.

– DES(Data EncryptionStandard)

Le système de chiffrement par blocs le plus utilisé jusqu’à l’an 2000 est le DES. Il
fait partie de la classe plus générale des chiffrements de Feistel .
Les grandes lignes de l'algorithme sont les suivantes :
 Fractionnement du texte en blocs de 64 bits (8 octets) ;
 Permutation initiale des blocs ;
 Découpage des blocs en deux parties : gauche et droite ;
 Etapes de permutation et de substitution répétées 16 fois (appelées rondes) ;
Recollement des parties gauches et des parties droites puis permutation initiale inverse.

11
Pourtant, les longueurs des clés ne permettent pas de résister à des attaques de plus en plus
performantes grâce au progrès des ordinateurs. Pour pallier ce problème, le schéma DES est
amélioré et devient le schéma AES (Advanced EncryptionStandard), en 1997.

– Rijndael ou AES (Advanced EncryptionStandard)

En 1997, le NIST (National Institute of Standards and Technology) américain lance un appel
d'offre afin de trouver un remplaçant au DES. 15 algorithmes sont alors étudiés, et en fonction
des différents critères, en 2000, l'algorithme belge Rijndaël (à prononcer raindal), proposé par
Joan Daemen et Vincent Rijmen, est retenu. Il faut savoir que chacun des modèles a été testé
sur plusieurs types de surface et Rijndaël n'a été le premier sur aucune d'elle, mais il a montré
qu'il gardait à chaque fois des performances très intéressantes. Il a donc été choisi autant pour
sonadaptabilité que pour ses performances.
Du fait de son origine, l'AES est un standard. Il est donc libre d'utilisation, sans
restrictiond'usage ni brevet.
o Cryptographie à clefs publiques [4]

Tous les algorithmes évoqués jusqu’à présent sont symétriques en ce sens que la même clef
est utilisée pour le chiffrement et le déchiffrement. Le problème essentiel de la cryptographie
symétrique est la distribution des clefs : pour que n personnes puissent communiquer de
manière confidentielle il faut n (n-1)/2 clefs. Donc, c’est faire face à ces problèmes liés à la
distribution des clés que ce nouveau cryptosystème à clé publique aussi appelée cryptographie
asymétriquea été mis au point.
L’idée de base des cryptosystèmes à clefs publiques a été proposée dans un article
fondamental de Diffie et Hellman en 1976. Le principe fondamental est d’utiliser des clefs de
chiffrement et déchiffrement différentes, non reconstructibles l’une à partir de l’autre :
Une clef publique pour le chiffrement
Une clef secrète pour le déchiffrement
Ce système est basé sur une fonction à sens unique, soit une fonction facile à calculer dans un
sens mais très difficile à inverser sans la clef privée.
Pour faire une explication imagée, la clef publique joue le rôle d’un cadenas. Imaginons que
seul Bob possède la clef (clef secrète), Alice enferme son message dans une boîte à l’aide du
cadenas et l’envoie à Bob. Personne n’est en mesure de lire le message puisque seul Bob
possède la clef du cadenas.

11
Lorsqu’Alice, l’Emetteur, et Bob le destinataire, veulent communiquer de façon sécurisée,
Bob choisit une paire de clés de chiffrement et de déchiffrement (K e, Kd). Il envoie la clé
publique Ke à Alice, par l’intermédiaire d’un canal qui n’est pas forcement sécurisé. Alice
transforme le message m en texte chiffré C= e (Ke, m) où e représente une fonction de
chiffrement, et envoie ce texte chiffré c à Bob. De son côté, Bob reçoit le texte chiffré c et
calcule m= d(Kd, c) où d est une fonction de déchiffrement et Kd est la clé privée connue
uniquement de Bob.
Ainsi, Bob récupère le message initiale m. Ce schéma est illustré sur la figure 3.7 ci-dessous :

FIGURE 14 : CHIFFREMENT À CLÉ PUBLIQUE

Il existe plusieurs exemples de cette cryptographie à clé publique, par exemple l’algorithme
de Diffie-Hellman, RSA, Elgamal 6. Pourtant les deux algorithmes les plus connus et les plus
sûrs restent : RSA et Elgamal 6.

o Cryptographie hybrides

Il existe aussi des systèmes de protection mélangeant les deux techniques pour en garder leurs
avantages, l'idée est d'utiliser la rapidité de l'algorithme symétrique, et la sécurité de
l'asymétrique. On les appelle les systèmes hybrides. L’exemple le plus probant est PGP mais
on peut aussi citerGnuPG et SSL.

3.2.4 Cryptanalyse [2] [10]

Lorsqu’un cryptosystème est synthétisé, il faut s’assurer qu’il est effectivement robuste face à
des attaques pirates. Cette étape de validation ou de vérification est appelée la cryptanalyse.
Elle consiste à tester les cryptosystèmes afin de déceler leurs éventuelles faiblesses. La
cryptanalyse des algorithmes est ainsi essentielle pour trouver les failles des algorithmes.
Faire la cryptanalyse d'un algorithme de chiffrement, c'est étudier sa sécurité en tentant de

11
casser les fonctions cryptographiques qui le composent à l'aide d'attaques.Le processus par
lequel on tente de comprendre un message en particulier est appelé une attaque.

Il est donc avantageux pour un algorithme d'être complètement publié (code source) pour
permettre aux cryptographes d’étudier sa sécurité.
Il existe plusieurs familles d’attaques cryptanalytiques, les plus connues étant l’analyse
fréquentielle, la cryptanalyse différentielle et la cryptanalyse linéaire.

11
3.3Sécurisation d’une application Web :
Sécuriser une application ou un site web revient à mettre en place les mécanismes qui
permettront aux utilisateurs de lui accorder une certaine confiance quant à sa capacité à
assurer un certain degré de confidentialité, de disponibilité ou d’intégrité.

La sécurité d’une application web ne repose pas uniquement sur le code, mais est
dépendante de plusieurs autres facteurs, comme le serveur, l’architecture du réseau, etc.

FIGURE15: LES DIFFÉRENTES BRIQUES NÉCESSAIRES POUR ACCÉDER À UNE APPLICATION


WEB DEPUIS INTERNET

Si l’application est correctement architecturée, il sera plus facile d’implémenter des


contrôles de sécurité complémentaires. On peut s’appuyer, par exemple, sur un modèle de
conception de type MVC (modèle, vue, contrôleur). Ce modèle repose notamment sur la
présence d’un contrôleur unique (ou de contrôleurs qui en héritent), et qui sert de porte
d’entrée. De même, l’envoi des données vers le navigateur est réalisé par l’intermédiaire de
vues1 : un contrôle ou une mise en forme implémentés en leur sein seront réalisés pour toutes
les sorties.

11
Quant au modèle (et notamment sa composante d’accès à la base de données), il
s’appuie également sur un objet unique, qui garantira la sécurité des informations.

3.4Les risques
Le risque est une notion assez peu évidente à appréhender. Il peut s’exprimer comme
la conjonction entre une possibilité d’événement, une cible et un impact.

Il est ainsi possible de représenter le risque par ces quatre facteurs : la cause ou le
scénario, la probabilité d’occurrence, la cible, et l’impact

FIGURE 16: LE RISQUE

3.4.1 Comment se protéger du risque?

Une fois le risque identifié, plusieurs stratégies sont possibles pour éviter qu’il ne se
produise, ou pour en réduire les effets. Pour reprendre notre exemple de la conduite en
montagne, plusieurs pistes sont envisageables. La première serait d’éviter de conduire en
montagne, en utilisant des routes plus sûres, mais qui rallongeraient peut-être le trajet. Il est
également possible d’équiper la voiture de pneus adaptés (pneus-neige en hiver), et s’assurer
que les passagers aient attachés leur ceinture. Enfin, une conduite prudente, en maîtrisant la
vitesse, sera un gage de sécurité.

11
Dans la méthode EBIOS, quatre stratégies sont proposées pour traiter un risque :
l’évitement, sa réduction, le transfert ou son acceptation

L’évitement consiste à choisir une option qui le rendra improbable, par exemple
prendre l’autoroute ou annuler le voyage. En informatique, cela pourra être de décider de ne
pas informatiser une procédure, si les risques qu’elle fait courir à l’entreprise sont
disproportionnés par rapport aux avantages attendus.

La réduction va viser à prendre un certain nombre de mesures qui limiteront soit sa


probabilité, soit son impact (pneus-neige, ceinture attachée, vitesse contenue, etc.). Pour un
projet de développement, cela comprendra la plupart des mesures de sécurité qui seront
implémentées, ainsi que les mécanismes de sauvegarde des données mis en place, par
exemple

Le transfert va consister à demander à un tiers de le prendre en charge En


informatique, le recours à un hébergeur, qui assurera une disponibilité 24 heures sur 24, rentre
dans cette catégorie. Il en est de même quand une PME envoie une copie de ses données chez
un prestataire proposant une architecture de type Cloud : elles sont confiées à un tiers qui
dispose des salles et des serveurs adéquats pour assurer leur protection contre la perte. Là
aussi, le choix du prestataire et du contrat liant les deux parties ne sera pas laissé au hasard,
tant il est important de vérifier au préalable la capacité du tiers à assumer réellement la
responsabilité qui lui est transférée.

Enfin, l’acceptation du risque, en l’état, peut être un choix pertinent. Par exemple, un
logiciel utilisé pour gérer la réservation des salles de réunion d’une entreprise peut très bien
être peu protégé : si les informations sont perdues ou corrompues, le risque de désorganisation
peut être limité. Mais ce choix ne doit être pris qu’en tout état de cause, et surtout pas par
défaut : en cas de problème, l’absence d’une décision serait reprochée à ceux qui auraient mis
en œuvre le traitement

11
3.4.2 Déterminer la cible

Reprenons le schéma présentant l’architecture technique qui est souvent mise en place
quand une application web est déployée

FIGURE 17: DÉTERMINER LA CIBLE

Nous avons représenté deux cibles potentielles. Celle de gauche concerne plutôt les
aspects liés au réseau, au fonctionnement des serveurs, aux mécanismes de protection contre
les intrusions. Elle pourrait être prise en compte lors de l’établissement d’un plan de
continuité d’activité, ou lors de l’étude des risques liés à l’infrastructure du réseau.

La seconde, celle de droite, correspond à notre projet d’application web. Elle intègre
les parties logicielles correspondant au serveur web, à l’application elle-même, et à la base de
données.

La cible peut être affinée en fonction de l’état de maturité de l’entreprise. Si des


mesures de sécurité sont déjà en œuvre et maîtrisées au niveau du serveur web, il ne sert à rien
de l’intégrer dans l’étude. Il en est de même si le serveur de base de données est déjà
largement protégé, avec des procédures qui sont imposées aux développeurs.

Le choix de la cible est particulièrement important : si elle est trop réduite, il y a de


grandes chances que des lacunes dans la sécurité subsistent. Si elle est trop vaste, l’étude va
être plus complexe, et des mesures de sécurité redondantes pourraient être proposées, ce qui
coûtera du temps et de l’argent.

11
En général, l’analyse de risque pour un projet de développement informatique se
circonscrit au serveur web, tout au moins en ce qui concerne l’implémentation de
l’application dans celui-ci, le programme lui-même, et les relations qu’il peut avoir avec la ou
les bases de données.

3.4.3 Déterminer l’impact

C’est probablement la partie la plus compliquée de l’étude du risque (nous verrons que
l’analyse des scénarios peut être transférée).

La détermination de l’impact s’effectue en deux temps. D’abord, le besoin de sécurité


est estimé, puis l’impact d’une défaillance est évalué.

Le besoin de sécurité est déterminé, en général, selon trois critères, appelés également
CID (les initiales de chacun) : la confidentialité, l’intégrité et la disponibilité. Les critères sont
notés en général de 1 à 4, le niveau 1 correspond au besoin le plus faible, et le 4 au besoin
maximal.

Ces grilles de critère sont élaborées par les entreprises, qui les adaptent à leur
environnement et leurs besoins réels. Il existe bien sûr des grilles d’exemples, dont celles qui
sont présentées ici et qui ont été proposées par l’ANSSI.

3.4.4 Quelles causes ou quels scénarios prendre en compte?

Nous avons estimé l’impact d’une défaillance du système d’informations pour


l’entreprise. Pour pouvoir se protéger, encore faut-il connaître ce qui nous menace.

Lors de l’établissement d’un plan de continuité d’activité, il est assez facile de passer
en revue l’ensemble des causes possibles : risque humain, panne électrique ou du réseau,
risque technologique (établissements classés, c’est-à-dire connus pour leur dangerosité
potentielle), risque naturel (inondation, tremblement de terre, incendie, etc.), ou autre.

Pour ce qui concerne les applications informatiques, l’exercice est beaucoup plus
difficile. S’il est possible d’envisager assez facilement les pannes des machines (mais qui sont
intégrées en principe dans le plan de continuité d’activité), les scénarios d’attaque strictement
informatiques sont beaucoup plus complexes à recenser.

L’informatique, et le développement logiciel en particulier, est une technologie


immatérielle. Cela ne veut pas dire qu’il ne faut pas des machines pour faire fonctionner les

11
programmes, mais la manière de les concevoir reste un travail intellectuel, basé fortement sur
l’imagination. D’ailleurs, sans contraintes particulières, pour traiter le même sujet, deux
développeurs créeront des programmes significativement différents, tant dans leur approche
ergonomique que dans leur conception interne.

Les attaques informatiques sont, elles aussi, des inventions de l’esprit, qui vont
chercher à trouver des failles auxquelles personne n’aura pensé initialement. Comme toute
connaissance, elle se complexé au fil du temps : si les attaques simples continuent d’exister
(les injections de code SQL restent les plus fréquentes, en raison de leur facilité de mise en
œuvre), des scénarios beaucoup plus sophistiqués voient le jour. Une personne seule, voire
une entreprise, aura énormément de mal à se tenir au courant ou imaginer toutes les attaques
possibles et préparer des contre-mesures adéquates.

Il est probablement plus simple, moins coûteux et plus sûr de s’appuyer sur des
référentiels déjà existants.

Il existe de nombreuses sociétés commerciales qui ont fait leur métier de la recherche
des vulnérabilités. Au niveau des gouvernements, des CERT (Computer Emer-
gencyResponse Teams [WIK 16a]) ont été mis en place, et informent régulièrement des
alertes de sécurité détectées. En France, le CERT principal est assuré par l’ANSSI, mais des
CERT dédiés, par exemple pour le réseau de la recherche française, existent également.

Les CERT sont utiles pour connaître les vulnérabilités détectées au fil de l’eau, mais
ne permettent que rarement d’avoir une vue d’ensemble.

Il existe également des recueils d’exigences qui vont faciliter le travail des
développeurs. L’ANSSI a publié un document présentant des recommandations pour la
sécurisation des sites web. S’il contient beaucoup d’informations concernant l’organisation
générale ou la gestion des traces, les recommandations restent assez globales et peu précises
pour les aspects liés à la programmation

11
3.5 Les techniques de sécurité
3.5.1 Gérer l’identification des utilisateurs

Identifier les utilisateurs dans l’application est l’un des passages obligés des
applications de gestion. Cela permet de définir les droits d’accès aux modules (lecture,
écriture). Ils sont en général attribués par l’intermédiaire de groupes. Un utilisateur peut être
associé à l’un ou plusieurs d’entre eux pour obtenir des droits d’accès correspondants à ses
besoins.

La première étape consiste à s’assurer que la personne qui se connecte est bien celle
qu’elle prétend être. Le mécanisme le plus simple est d’utiliser un compte de connexion et un
mot de passe. Ce login peut être spécifique au logiciel, mais dans les entreprises, le recours à
un annuaire centralisé est souvent préféré. Ainsi, les employés n’ont pas besoin de retenir des
mots de passe différents selon les applications. De plus, au départ de l’un d’eux, il est facile
d’invalider son compte, et de fermer par cette opération tous les accès aux logiciels qu’il
utilisait.

Depuis quelques années, avec l’essor d’Internet, le login des clients est basé sur
l’adresse mail. Cela présente plusieurs avantages, comme la possibilité d’envoyer un lien
permettant de renouveler le mot de passe en cas de perte. De plus, une adresse mail est
forcément unique, deux personnes ne peuvent obtenir la même.

Il existe d’autres méthodes permettant d’identifier les utilisateurs. Dans certaines


administrations, le recours à un certificat numérique personnel, généré par celles-ci, est
souvent préféré. Il garantit une identification totale de l’utilisateur : sa délivrance impose à
ceux-ci de présenter une pièce d’identité. On dit alors que l’utilisateur est authentifié : non
seulement son compte de connexion est connu, mais son identité est vérifiée.

Ces certificats sont actuellement considérés comme très sûrs, car basés sur le
chiffrement asymétrique. Ils peuvent également être intégrés à des cartes à puce ou des clés
USB chiffrées, ce qui limite encore les risques de vol. Néanmoins, cela impose de mettre en
œuvre des protocoles de vérification bien particuliers, avec soit la lecture du certificat stocké
dans le navigateur, soit l’installation d’un lecteur de carte à puce, etc. Cela complexifie en
général le travail des équipes d’assistance, qui doivent aider les utilisateurs à gérer
correctement ces dispositifs.

11
En restant dans le domaine d’une identification via login/mot de passe, trois méthodes
sont en général utilisées aujourd’hui pour retrouver les comptes : soit en stockant les
informations dans une base de données, soit en interrogeant l’annuaire de l’entreprise, en
général par le biais du protocole LDAP (Lightweight Directory Access Protocol, une norme
de gestion d’annuaire [WIK 15e]), soit en sous-traitant l’identification à un serveur spécialisé,
le serveur CAS (Common Access Service), que nous étudierons dans le détail.

Les mécanismes de vérification de certificat personnels sont, en principe, intégrés à


des serveurs CAS, en raison de la complexité de leur mise en œuvre et de l’environnement de
sécurité à mettre en place pour garantir la fiabilité de la plate-forme.

 Gérer les comptes dans la base de données

La première méthode consiste à stocker les utilisateurs dans la base de données et


gérer leur mot de passe directement dans l’application. C’est le mécanisme le plus simple à
concevoir mais qui reste difficile à implémenter, en raison des risques qui pèsent sur le
stockage des mots de passe.

La puissance de calcul augmentant régulièrement1, les risques de casse d’un mot de


passe augmentent également régulièrement. Si, il y a quelques années, on considérait qu’un
mot de passe devait comprendre au minimum huit caractères, choisis dans trois des quatre
jeux disponibles (chiffres, minuscules, majuscules, caractères spéciaux), aujourd’hui, il
devrait avoir une longueur de douze caractères pris dans les quatre jeux disponibles pour que
le cassage exhaustif ne soit plus possible. Cela est vrai tant que le nombre d’essais autorisés
est illimité.

On estime qu’un mot de passe est correct dès lors qu’il présente un risque inférieur à
1/211 d’être découvert (soit 1 sur 2 048). Un code PIN à quatre chiffres, avec trois essais
possibles (et verrouillage ensuite), répond à ce critère : c’est pourquoi les codes des cartes à
puce bancaires sont considérées comme sûrs.

Sans rentrer dans le détail complet d’une implémentation totalement sécurisée, voici
quelques points qu’il est souhaitable de vérifier :

- il faut s’assurer que le mot de passe soit chiffré avec une fonction de calcul
d’empreintes, et qu’il soit salé, c’est-à-dire qu’il soit associé à un texte
complémentaire pour que deux mots de passe identiques, utilisés par deux personnes,

11
ne disposent pas de la même empreinte. En cas de fuite de la liste des mots de passe,
les pirates auront ainsi plus de difficultés pour retrouver les mots de passe les plus
utilisés;
- la procédure de changement du mot de passe doit imposer un certain niveau de
complexité dans son choix. En général, il est conseillé d’imposer une longueur d’au
moins huit caractères, choisis parmi trois jeux de caractères différents parmi les
minuscules, majuscules, chiffres et caractères spéciaux;
- le même mot de passe ne devrait pas pouvoir être réutilisé, et sa durée de vie devrait
être limitée. C’est toutefois rarement le cas pour les applications destinées au grand
public ou à des clients en dehors de l’entreprise. Même les sites bancaires n’imposent
pas son changement;
- si une procédure de recouvrement automatique du mot de passe est prévue, en cas de
perte, elle doit être basée sur l’envoi d’un mail contenant un lien codé, à usage unique
et à durée limitée, qui permettra à l’utilisateur de changer son mot de passe par
l’intermédiaire d’une page spécifique.
 Verrouiller les mots de passe

Pour limiter la recherche exhaustive, il est possible de rajouter un blocage du mot de


passe au bout de quelques essais infructueux. Néanmoins, un pirate peut décider de ne tester
que quelques combinaisons, puis d’attendre que l’utilisateur rentre son mot de passe, ce qui va
entraîner une réinitialisation du nombre d’essais. Ainsi, si le blocage intervient au bout de dix
essais infructueux, il est possible, pour un pirate, de tester uniquement cinq à neuf
combinaisons par jour, en espérant raisonnablement que l’utilisateur va saisir son bon mot de
passe tous les jours. Le pirate va pouvoir ainsi tester tous les jours quelques mots de passe
judicieusement choisis, et si les règles de base de complexité des mots de passe ne sont pas
respectées, aura de fortes chances de tomber sur le bon en quelques semaines.

Les systèmes d’identification proposent en général deux modes de verrouillage : un


mode avec blocage permanent, et un mode avec déverrouillage au bout d’un certain temps.

Avec le verrouillage permanent, la recherche par essais successifs est quasiment


impossible, surtout si le mot de passe ne figure pas dans la liste des mots de passe les plus
utilisés. En revanche, cela peut poser un problème de «déni de service» : un pirate peut très
bien vouloir verrouiller les mots de passe, particulièrement ceux des administrateurs, pour
bloquer les accès au système et gêner le fonctionnement de la structure attaquée.

11
Le verrouillage avec déverrouillage facilite, lui, la recherche des mots de passe : si le
déverrouillage intervient au bout de dix minutes, le pirate pourra tester soixante mots de passe
à l’heure, soit 250 000 en six mois. Là encore, si le mot de passe est complexe, il est peu
probable que celui-ci puisse être découvert. Mais s’il peut être déduit facilement (prénom de
l’enfant + chiffre, par exemple, ou transformation d’une minuscule en majuscule), la
probabilité de découvrir le bon mot de passe augmente fortement. Un des bons moyens pour
détecter ce type d’attaque consiste à tracer tous les blocages de mots de passe, et donc de
mettre en place un mécanisme qui les signale.

Le blocage régulier d’un même mot de passe pourra, ainsi, indiquer qu’une tentative
de cassage est potentiellement en cours.

3.5.2 Gérer les droits

La dernière étape dans la sécurisation d’une application consiste à gérer correcte- ment
les droits.

Avant de commencer à coder, il est important de définir la granularité des droits, c’est-
à-dire la manière de les appliquer. Faut-il gérer un droit global par grand module
(administration de l’application, gestion des tables de référence, gestion des dossiers), ou
plutôt par type d’action (consultation, modification, suppression)? Ou les combiner?

La seconde question doit aborder la manière de gérer les comptes des utilisateurs. Les
droits doivent-ils être attribués individuellement, ou bien en s’appuyant sur des groupes
existants (ceux de l’annuaire de l’entreprise, par exemple), ou en créant des groupes
spécifiques au sein de l’application?

 Que protéger?

D’une manière générale, il est possible d’identifier, dans une application, de grands
modules : la gestion des habilitations, la manipulation des tables de paramètres ou de
références, le suivi des dossiers (ou de plusieurs types de dossiers). Les opérations classiques
qui sont réalisées sur ces modules sont, en principe, la consultation des informations, l’ajout
d’une nouvelle information, sa modification ou sa suppression

11
 Gérer les droits des utilisateurs à partir des groupes de l’annuaire LDAP

Plusieurs cas de figure sont envisageables.

Dans une entreprise, tous les personnels peuvent être autorisés à accéder, en
consultation, à certaines informations. Si l’identification est basée sur un annuaire LDAP ou
un serveur CAS, il suffit d’attribuer le droit correspondant en retour de connexion. L’intérêt
d’une telle démarche est d’éviter d’avoir à déclarer tous les utilisateurs dans une application
accessible à l’ensemble de la société.

Il est également possible de restreindre ces accès à certains groupes déclarés dans
l’annuaire LDAP. Là encore, l’objectif est de faire confiance à l’annuaire de l’entre- prise.
L’application sera ainsi toujours en cohérence avec les changements de personnels.

11
Partie III : Réalisation et discussion

CHAPITRE 1: Résultats

11
1.1 Analyse orienté objet et son processus

L’analyse orienté objet avec son processus est la stratégie qui va nous permettre de
définir nos besoins dans le but d’identifier les Classes qui nous ont nécessaire pour réaliser le
projet.

Pour se faire il faut réunir quelques points :

 Rassembler les besoins


 Décrire l’application
 Identifier les objets important
 Décrire l’interaction entre objet
 Création du diagramme de classe
1.1.1 Rassembler les besoins

Cette étape c’est l’interaction entre le prestataire (développeur) et le demandeur de


service (utilisateur), le prestataire qui est le développeur identifie les besoins Fonctionnels et
Non Fonctionnels.

Cette partie d’analyse n’emploie aucun code de programmation. Le développeur fait


l’analyse à l’aide d’un simple crayon, une gomme et d’un bloc note dont le but de répondre à
la question de ce que fait l’application.

1.1.2 Description et Identification des cas d'utilisation

Un cas d'utilisation est un ensemble d'actions susceptibles d'être réalisées par un


système, produisant un résultat observable et intéressant pour un acteur particulier du
système. C'est l'image d'une fonctionnalité du système, déclenchée en réponse à la
stimulation d'un acteur. Il illustre, détecte puis décrit le besoin d'un utilisateur. La totalité des
cas d'utilisation constitue l'ensemble des fonctionnalités du système.

Les principaux acteurs qui auront à utiliser notre système sont les suivants :

 Administrateur AD : il possède des droits sur le module administration.


 Formateur FO : il possède des droits sur le module Organisation.
 Etudiant ET : il possède des droits sur le module Action.

11
Le schéma suivant décrit le lien entre les profils et les fonctionnalités de notre système :

FIGURE 18 : ARCHITECTURE FONCTIONNEL.

1.1.3 Diagramme de cas d'utilisation

Le diagramme des cas d'utilisation décrit sous la forme d'actions et de réactions, le


comportement du système du point de vue utilisateur. Il permet de définir les limites du
système et les relations entre le système et son environnement. C'est un diagramme qui
intervient tout au long du cycle de développement

 AD : ADMINISTRATEUR :

11
FIGURE 19 : DIAGRAMME DE CAS D’UTILISATION ADMINISTRATEUR

FO : FORMATEUR

11
FIGURE 20 : DIAGRAMME DE CAS D’UTILISATION FORMATEUR

11
ET : Etudiant

FIGURE 21 : DIAGRAMME DE CAS D’UTILISATION ETUDIANT

11
1.1.4 Diagramme de classe

FIGURE 22 : DIAGRAMME DE CLASSE

11
1.2 Phase de réalisation

Toutes les phases qui sont fait avant la phase de réalisations sont des modélisations
orienté objet qui sont concentré sur les idées et les concepts, au final tous ses préparations en
papiers vont se transformer en code que devra exécuter l’ordinateur

1.2.1 Les différents codes

 base.html.twig

<!DOCTYPE html>
<html lang="en">
<head>
<metacharset="utf-8">
<metahttp-equiv="X-UA-Compatible" content="IE=edge">
<metaname="viewport" content="width=device-width,initial-scale=1">
{% block stylesheets %}{% endblock%}
{% block javascripts_head %}{% endblock%}
</head>
<body>
{% block body %}{% endblock%}
{% block javascripts %}

{% endblock%}

</body>
</html>

 layout.html.twig

11
{% extends'::base.html.twig'%}

{% block stylesheets %}
<linkrel = "stylesheet" href = "{{ asset ('bundles/techcorpfront/css/bootstrap.css') }}"
type="text/css" />
<linkrel = "stylesheet" href = "{{ asset ('bundles/techcorpfront/css/style.css') }}"
type="text/css" />
{% endblock%}

{% block javascripts_head %}

{% endblock%}

{% block javascripts %}
<script src = " {{ asset ('bundles/techcorpfront/javascript/jquery-
1.11.0.js') }}"></script>
<script type = "text/javascript" src = " {{ asset
('bundles/techcorpfront/javascript/bootstrap.min.js') }}"></script>
{% endblock%}

{% block body %}
{% include"TechCorpFrontBundle:_components:navigation.html.twig" %}
{% block content %}

{% endblockcontent %}
{% endblock%}

 UserController.php

<?php

namespaceTechCorp\FrontBundle\Controller;

11
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

class UserControllerextendsController
{
public functionmanageFriendAction($friendId, $addFriend= true)
{
$em= $this->getDoctrine()->getManager();

$friend= $em->getRepository('TechCorpFrontBundle:User')->findOneById($friendId);

$authenticatedUser= $this->container->get('security.token_storage')->getToken()-
>getUser();

if(!$friend) {
return new Response("Utilisateur inexistant", 400);
}

if(!$authenticatedUser) {
return new Response("Authentification nécessaire", 401);
}

if ($addFriend) {
if (!$authenticatedUser->hasFriend($friend)) {
$authenticatedUser->addFriend($friend);
}
} else{
$authenticatedUser->removeFriend($friend);
}

$em->persist($authenticatedUser);
$em->flush();

return new Response("OK");

11
}

public functionaddFriendAction($friendId)
{
return $this->manageFriendAction($friendId, true);
}

public functionremoveFriendAction($friendId)
{
return $this->manageFriendAction($friendId, false);
}
}

 Entity : user.php

<?php

namespaceTechCorp\FrontBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mappingas ORM;

/**
* User
*
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="TechCorp\FrontBundle\Repository\UserRepository")
*/
class User extendsBaseUser
{
/**
* @var int
*

11
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected$id;

public function__construct()
{
parent::__construct();
}

/**
* Get id
*
* @return int
*/
public functiongetId()
{
return $this->id;
}
}

 routing.yml

tech_corp_front_user_timeline:
path: /timeline/{userId}
defaults: { _controller: TechCorpFrontBundle:Timeline:userTimeline }

 navigation.html.twig

<div class = "navbarnavbar-inverse " role = "navigation">


<div class = "container">
<div class = "navbar-header">

11
<a class = "navbar-brand " href="{{ url('tech_corp_front_homepage')}}">
MEF- Mada
</a>
<ulclass = "navnavbar-nav">
<li><a href="{{ url('tech_corp_front_homepage') }}" > Accueil </a></li>
<li><a href="{{ url('tech_corp_front_about') }}" > A propos </a></li>

<li class = "dropdown">


<a href="#" class = "btnbtn-primarydropdown-toggle" data-toggle = "dropdown"
aria-haspopup = "true" role = "button" aria-expanded = "false"> Compte <spanclass =
"caret"></span></a>
<ulclass = "dropdown-menu" role = "menu">
{% if not is_granted('IS_AUTHENTICATED_REMEMBERED') %}
<li><a href = "{{ path('fos_user_registration_register') }}"> S'inscrire </a></li>
<li><a href = "{{ path('fos_user_security_login') }}"> Se connecter </a></li>
<li><a href = "{{ path('fos_user_resetting_request') }}"> Mot de passe oublié </a></li>
{% else%}
<li><a href = "{{ path('tech_corp_front_user_timeline', {'userId' :
app.user.id} ) }}">Timeline</a></li>
<li><a href = "{{ path('fos_user_security_logout') }}"> Se déconnecter </a></li>
{% endif%}
</ul>

</li>

</ul>

</div>
</div>
</div>

11
1.2.2 Les différentes interfaces web

 Page d’accueil

FIGURE 23 : PAGE D’ACCUEIL

11
 Page pour les différentes formations

FIGURE 24 : LES FORMATIONS EXISTANTES

11
 Page contact

FIGURE 25 : PAGE DE CONTACT

11
CHAPITRE 2 : Problèmes vécues et solutions
apportées

2.1 Le contrainte dans la réalisation du projet

11
 Contrainte dans le codage

Résoudre les quelques bugs lors du codage comme les lignes de commande pour les
bases de données nous ont pris un peu de temps

L’obligation de réapprendre des lignes de commande qui nous ont retardé car la ligne
de commande joue un rôle primordiale en Symfony

Le temps d’apprentissage du Framework Symfony est bien plus élevé que pour un
langage en lui-même, de plus tous les meilleurs documentations sont tous en anglais

Avec le Framework Symfony, ça nécessite un apprentissage d’autre plusieurs langages


comme YAMAL, ou doctrine …

2.2 Les solutions apportées

 Le code

Symfony bénéficie d’une bonne communauté dans le monde (sur internet), donc on
n’est jamais tout seul, en effet, grâce au support de cette communauté, on a toujours trouvé
des réponses à nos question via des blogs pour résoudre les différents bugs du système. Et
aussi les différentes bibliographies

11
CHAPITRE 3 : Discussion

3.1 Les atouts et faiblesses de l’étude

11
Après analyse du problème, on a pu trouver le cas général de l’application gestion de
la formation, après cette modélisation Orienté Object, les idées et les concepts qui sont repris
en diagramme de classe UML seront transformer en code avec un grand atout qui est le
Framework symfony.

Le Framework nous permettait un gain de productivité malgré les quelques perte de


temps dans l’analyse.

Notre code est bien organisé, et on sait qu’un code bien organisé est plus maintenable
et évolutif.

Autre atout, est que notre projet a une longévité grâce à son élaboration avec
symfony, maintenant on pourra prendre en main l’évolution de notre projet. On pourra aussi
prendre en main n’importe quel projet même si on n’a pas participé à son élaboration.

Le virtuel, le point fort du e-Learning est aussi son principal point faible : il empêche
tout contact humain en face en face. Pour ceux qui travaillent en openspace, cela ne pose pas
de problème, mais pour les personnes qui sont déjà isolées (télétravail, petites équipes…),
cela peut apparaître comme un véritable frein.

3.2 Les perspectives d’avenir du projet

Aujourd’hui, le e-Learning n’a pas atteint les chiffres annoncés par les analystes il y a
3 ans. Le phénomène « coquille vide » des plates-formes e-Learning en est la cause. En effet,
dans de nombreux projets e-Learning, l’espace de formation que représente la plate-forme n’a
proposé que peu de contenu aux apprenants. Car les formateurs se sont trouvés confrontés à la
complexité technique et à la pauvreté pédagogique des outils mis à leur disposition. Ils n’ont
eu pour seule solution que de traduire leur savoir et savoir-faire par des Quiz ou des QCM.
Ajouter à cela le coût très important des plates-formes, on peut comprendre que le e-Learning
soit soldé dans certains cas par échec. Et pourtant, l’apport pédagogique des supports
multimédias est considérable :

11
 Evaluation des prés requis pour mieux cibler les apprentissages.
 Personnalisation des parcours de formation.
 Accompagnement pendant et après les formations.
Malgré tout, nous pouvons dire qu’il y a un avenir pour le e-Learning, grâce à l’arrivée
des outils auteurs dédiés au e-Learning. Ce type de logiciel conçu pour les formateurs, permet
de mettre en forme rapidement des contenus et des exercices autrement plus pertinents que les
Quiz ou les QCM. Tout comme on utilise PowerPoint pour concevoir des diaporamas, il est
évident que les formateurs utiliseront dès demain des outils comme e-Learning maker pour
accompagner leurs formations.

Une manifestation est entièrement consacrée aux technologies les plus récentes et à
leur application dans la formation. E-éducation 2003(Bernes, le 23 mai 2003, OFFT – l’Office
Fédéral de la Formation et de la Technologies).

La manifestation est conçue comme un espace dans lequel des représentants de


l’instruction publique rencontrent des professionnels de la recherche et des entreprises. Une
attention toutes particulière est consacrée au degré tertiaire et à la formation continue en
entreprise.

Il est nécessaire d’intégrer les nouvelles technologies dans l’enseignement et dans la


formation. C’est pourquoi cette manifestation a pour thème principal la relation future entre le
secteur public et le secteur privé dans le domaine du e-Learning.

Cette dernière partie que nous as permis de voir l’application à jour après le terme de
son développement. Cette partie nous ont aussi permis de voir les difficultés des techniques
dans la réalisation de notre projet et en discuter pour apporter des nouvelles initiatives avec
une perspective d’avenir pour toujours améliorer notre travail.

11
Conclusion

Tout au long de ce rapport, nous avons présenté les différentes étapes de


développement de l’outil de gestion de formation. On a fait de la modélisation orienté objet
grâce à la technique UML, ce qui nous a permis de mener correctement la tâche d’analyse des
besoins à l’aide du diagramme de cas d’utilisation et le diagramme de classe qui sera ensuite
transformé en code.

Puisque nous travaillons avec le Framework Symfony. Ce projet nous a donné


l’opportunité de s’imprégner dans la vie professionnelle du développement dans un milieu
réel et avoir un début d’expérience significatif, et il nous a appris comment réussir de bonnes
relations pour assurer un travail de groupe, comment compter sur soi pour résoudre les
problèmes au cas où ils se présentent, comment être attentives aux indications de nos
supérieurs, aussi comment être bien organisées pour accomplir dans les meilleurs délais et
meilleures conditions les tâches qui nous sont confiées.

Au cours de la réalisation de notre projet, nous avons étaient astreints par quelques
limites notamment, la contrainte du temps qui était relativement un obstacle devant l’analyse
des besoins et la compréhension du travail à effectuer. Cependant, il était une occasion pour
mettre en évidence et déployer sur le plan pratique nos connaissances.

Le projet peut être surement amélioré, et ce, en lui ajoutant quelques modules et
interfaces pour mieux l’adopter aux besoins de l’utilisateur et pour qu’il soit toujours fiable et
au niveau des progrès.

11
Bibliographie

[1] SYMFONY 3 – Alexandre Bacco – Edition EYROLLES – 2016 - 61, bd Saint-Germain


75240 Paris Cedex 05

[2] SYMFONY – Clément Camin – Edition EYROLLES – 2015 - 61, bd Saint-Germain


75240 Paris Cedex 05

[3] La sécurisation d’une application web - Eric Quinton - 2017 - ISTE Editions Ltd 27-37
St George’s Road London SW19 4EU UK

[4] Christian SOUTOU, « Apprendre SQL avec MySQL », Librairie Eyrolles, Paris Saint-
Germain, 2006.

[5] Jean-Pierre Vincent et Jonathan Verrecchia, « HTML5 de la page Web à l’application


Web(1eed.) », Dunod, 2011.

[6] Eric Daspet& Cyril Pierre de Geyer, « PHP 5 Avancé », Eyrolles, 2005.

[7] Philippe Rigaux, « Pratique de MySQL et PHP (3eed.)», O’Reilly, 2005.

[8]UML 2 - Fien VAN DER HEYDE  Laurent DEBRAUWER  - ENI Editions

[9] C.C. Chang, M.S. Hwang, et T-S Chen. A new encryption algorithm for image
cryptosystems. The Journal of Systems and Software, p. 83–91, 2001.

[10] Douglas R. Stinson. Cryptography: Theory and Practice, (Discrete Mathematics and Its
Applications) . Chapman & Hall/CRC Press, New York, Novembre 2005.

[11] J.M Shapiro "Embedded Image Coding Using Zerotrees of Wavelet Coefficients", IEEE
Trans. on Signal Processing, Vol 41, No.12, pp.3445-3462, Dec. 1993.

[12] Amir Said "Example of Application for Image Compression", 1999.

[13] Matthieu MOINARD "Quantification et codage après transformée en ondelettes


orientés", 4 septembre 2007.

[14] R. Norcen, M. Podesser, A. Pommer, H.P. Schmidt, et A. Uhl. Confidential storageand


transmission of medical image data. Computers in Biology and Medicine, p.277–292, 2003.

11
[15] W. Puech, J.J. Charre, et M. Dumas. Transfert sécurisé d’images par chiffrement
deVigenère. Dans NimesTic 2001, La relation Homme - Système : Complexe, Nîmes,France,
p. 167–171, 2001.

[16] Nicolas Thome "Analyse Multi Résolution et Ondelette",2013.

[17] A. Forouzan., “Cryptography and Network Security ", First Edition. McGraw-Hill,
(2007), USA.

[18] Atul Kahate (2009), Cryptography and Network Security, second edition, McGraw-Hill.

[19] Aseemjagadev, “Advanced Encryption Standard (AES) Implementation”, M.Tech Thesis


National Institute of Technology, Rourkela. May, 2009.

[20] Andreas Ruttor, “Synchronization and Cryptography “, PhD thesis, Bayerische Julius
MaximilianUniversity Wurzburg, 2006.

[21] www.codeproject.com/Articles/39067/Cryptography.

[22] github.com/sagunms/NeuroCrypto.

[23] cryptography , en.wikipedia.org/wiki/.

[24] Advanced_Encryption_Standard, en.wikipedia.org/wiki/.

11
11

Vous aimerez peut-être aussi