Escolar Documentos
Profissional Documentos
Cultura Documentos
Samuel Martin
INSA Rouen
GM 3
1/41
Samuel MARTIN GM4
SOMMAIRE
Sommaire..........................................................................................................2
Remerciements................................................................................................3
Introduction.....................................................................................................4
Présentation de l'entreprise..........................................................................5
1 – L'histoire de la création.......................................................................5
Déroulement du stage..................................................................................18
1 – Présentation du projet.......................................................................18
A) Les fonctionnalités....................................................................27
B) Aperçu de la base de donnée....................................................36
C) Bref aperçu des fonctions dédiées à la sécurité.......................39
Conclusion......................................................................................................41
2/41
Samuel MARTIN GM4
REMERCIEMENTS
– M. Gaston Charton
– M. Jean-Pierre Orieux
– M. Cyrille Lamontagne
3/41
Samuel MARTIN GM4
INTRODUCTION
Par exemple un étudiant doit pouvoir y retrouver son emploi du temps et ses
supports de cours, un professeur doit pouvoir créer des cours, gérer des
classes et publier du contenu. Le DRH doit pouvoir gérer le personnel, ajouter
des utilisateurs, mettre à jour des informations... Un commercial doit être à
même d'obtenir des données statistiques sur les clients.
Cet outil doit être disponible depuis n'importe quel ordinateur connecté à
Internet ou au réseau interne de l'institut.
4/41
Samuel MARTIN GM4
PRESENTATION DE L'ENTREPRISE
1) L’histoire de la création
L’ APEEC est une idée qui émerge de relations amicales des professeurs
de nationalités différentes, d'anciens étudiants Chinois et Russes devenus
cadres d'entreprises après avoir étudié le management dans des écoles
Chinoises, Russes et Françaises, de personnes convaincus par l'importance
des points de convergence entre la France, la Chine, la Russie et les autres
grandes régions du monde. Cette association se veut être promotrice et
facilitatrice d'échanges. La University of International Business and
Economics de Pékin et l’Académie de finances de Moscou ont participé à
l’organisation particulière basée sur la loi française de Juillet 1901 relative
aux associations à but non lucratif.
5/41
Samuel MARTIN GM4
6/41
Samuel MARTIN GM4
De plus, vu que l’Institut était situé à proximité d’une forêt, l’arbre vient
symboliser l’implantation de l’établissement dans un environnement où la
nature est très présente. Il s’agissait de mettre en avant le cadre d’études
qu’offrait la localisation de l’Institut.
7/41
Samuel MARTIN GM4
8/41
Samuel MARTIN GM4
Le réseau Pierre Attelée regroupe tous les anciens élèves ainsi que les
réseaux de l’Institut et constitue la principale ressource pour faire connaître
l’Institut de la Pierre Attelée dans les différents pays cibles.
9/41
Samuel MARTIN GM4
Les quatre groupes sont l’Institut, les étudiants, les partenaires et les
entreprises. les deux premiers sont en haut du schéma car ils ont un lien très
soudé dû fait que les étudiants sont formés par l’Institut sur deux activités de
fond : le conseil et les ressources humaines.
Les entreprises et les partenaires sont en bas du schéma car ils ont un
lien particulier dû fait qu’une partie de ces partenaires sont des entreprises
(comme les cinq plus gros partenaires qui sont reliés en réseau), et qu’ils sont
associés dans l’association des entreprises utilisatrices des services de la
Pierre Attelée.
Ce pont est amplifié aussi par celui créé par les étudiants pour les
10/41
Samuel MARTIN GM4
11/41
Samuel MARTIN GM4
12/41
Samuel MARTIN GM4
3. L’assurance est une activité qui touche à tous les domaines et donne
ainsi l’opportunité d’accueillir les étrangers à fort potentiel.
L’ensemble de ces trois raisons est soutenu, utilisé et valorisé par l’expérience
des seniors qui joue un rôle prépondérant dans ce système puisque ce sont
eux qui vont former les étudiants et les professionnels.
13/41
Samuel MARTIN GM4
Il faut constater que l’Institut met en avant les relations entre les
étudiants et les entreprises qui vont travailler en commun sur des missions
d’études. Cette idée est représentée par les deux branches (l’une est bleue et
l’autre est orange) qui se regroupent dans un tronc commun (qui est bleu
foncé) pour aboutir à un but final qui est la finalisation du projet de
l’entreprise et de la relation entre l’entreprise et l’étranger. L’étudiant est
recruté puis formé à un métier, le tout est en parallèle avec l’identification des
besoins des entreprises qui ont été recherchées par l’Institut. Les étudiants
font partie, par la suite, des missions d’études et de conseils.
Le graphique montrant un cercle vertueux qui est rassemblé autour de trois volontés :
Former, projets réels et développer les réseaux.
14/41
Samuel MARTIN GM4
15/41
Samuel MARTIN GM4
L’Institut est avant tout la clé d’entrée dans les métiers liés à l’Assurance
et plus largement à la Banque-Assurance. Les diplômes préparés sont tout
d’abord :
Le schéma représentant les différentes possibilités pour les étudiants d’obtenir un diplôme
qualifiant
16/41
Samuel MARTIN GM4
17/41
Samuel MARTIN GM4
DEROULEMENT DU STAGE
1) Présentation du projet
Tous ces problèmes peuvent être résolus par la mise en place d'une solution
informatique.
Les moyens mis à ma disposition pour réaliser ce projet sont les suivants :
– Un bureau
– Un ordinateur portable personnel
– Un accès à internet haut débit
– Une ligne téléphonique
18/41
Samuel MARTIN GM4
Les raisons du choix de ces différentes technologies sont présentées plus loin
dans ce rapport.
19/41
Samuel MARTIN GM4
Enfin j'ai collaboré avec d'autres stagiaires pour la mise en place d'un système
de suivi des utilisateurs : stockage et utilisation d'informations personnelles
afin d'automatiser certaines opérations de gestion (combien coûte un client
par exemple).
20/41
Samuel MARTIN GM4
Tout d'abord au niveau des outils utilisés : les gestionnaires de base de donnée
sont nombreux, de même que les langages web. On peut citer par exemple
Oracle, Postgresql, Mysql pour les premiers et PHP, ASP ou JSP pour les
seconds. Chacun ayant ses spécificités, il convient de le choisir
judicieusement.
J'ai tout d'abord écarté les gestionnaires de base de donnée du type d'Oracle
ou Access car ce sont des gestionnaires propriétaires et payants (ou très
limités dans leur version gratuite, pour le cas d'Oracle). Viennent ensuite
Postgresql et Mysql. Ce sont deux ténors de la base de donnée, et sont tous
deux libres. Etant donné que les deux gestionnaires sont assez similaires, mon
choix s'est porté vers Mysql, que j'ai déjà utilisé lors de projets dans le cadre
de l'UV GM3 « systèmes d'exploitations ».
De même, mon choix s'est vite porté vers le langage PHP pour exploiter la
base de donnée. En effet, outre le fait que je l'avais déjà utilisé
précédemment, c'est un langage libre, extrèmement répandu et donc très bien
documenté. De plus il intègre très bien Mysql, avec de nombreuses fonctions
dédiées.
J'ai de plus utilisé PHPMyAdmin, qui est une interface en PHP permettant de
gérer facilement (et graphiquement) les bases Mysql.
Mysql
21/41
Samuel MARTIN GM4
2005. Mysql supporte bien entendu la technologie ODBC (une interface entre
le serveur base de donnée et le client à vocation universelle). C'est le
gestionnaire utilisé par Wikipedia, Youtube et Nokia notamment.
PHP
PHPmyAdmin
22/41
Samuel MARTIN GM4
Apache
On notera ici que l'absence de budget dédié à l'achat de logiciels n'est pas un
handicap : les outils les plus performants et les plus utilisés sont libres et
gratuits. Ils sont d'ailleurs diffusés sous la licence GPL, à part Apache qui est
distribué sous sa propre licence, fortement similaire à la licence GPL.
Son objectif est le suivant (source :
http://en.wikipedia.org/wiki/GNU_General_Public_License )
23/41
Samuel MARTIN GM4
La table users contient un champ id, qui identifie par un numéro unique
chaque utilisateur. Cet id est ensuite rappelé dans les autres tables contenant
une entrée le concernant, afin de pouvoir l'identifier de manière unique et
rapide.
Ce système d'id est en fait repris par toutes les tables, ce qui leur permet de
constituer un index et de répertorier de façon fiable chaque enregistrement.
De plus il est géré automatiquement par Mysql : à chaque nouvelle entrée
dans la table le champ id est incrémenté.
Par exemple, un des champs de la table classes est eleves_id, qui contient les
id de tous les élèves de la classe.
De même, un des champs de la table infos_personnelles est user_id. Il
contient la même valeur que le champ id de la table users, ce qui permet de
faire la correspondance entre utilisateur informatique et personne « réelle ».
24/41
Samuel MARTIN GM4
C) Structure de l'intranet
Ainsi, chaque type d'utilisateur doit avoir accès à des ressources spécifiques,
tout en n'ayant pas d'accès aux ressources d'autres types d'utilisateurs.
Par exemple un étudiant doit pouvoir communiquer avec ses professeurs,
consulter et modifier les informations le concernant personnellement, mais ne
doit en aucun cas avoir accès à la liste des clients d'un commercial ou pouvoir
modifier le carnet d'adresses d'un professionnel.
Suivant l'activité de la personne se connectant, des pages spécifiques sont
donc consultables, et il en va de même pour les données.
J'ai donc stocké dans la base de données la liste des pages autorisées pour
chaque groupe d'utilisateurs, ainsi que d'autres informations ayant trait à la
confidentialité des données (types d'utilisateurs « compatibles » au niveau de
l'échange d'informations, champs visibles/modifiables...).
Enfin étant donné que cet intranet doit être accessible par Internet, la
sécurisation des accès a été une obligation majeure.
Ainsi l'authentification d'un individu fait appel à différents contrôles :
l'adresse IP d'un utilisateur a-t-elle variée durant sa connexion ? Ne reste-t-il
pas inactif trop longtemps ? Y a-t-il un intermédiaire entre lui et le serveur
(principe de l'attaque « man in the middle ») ?
En outre, les mots de passes sont cryptés suivant l'algorithme SHA, et sont
modifiés par une chaîne aléatoire pour être sûr qu'ils ne correspondent pas à
un mot usuel (technique dite du « grain de sable »). Seul le résultat du
cryptage et ce « grain de sable » sont stockés dans la base de données.
25/41
Samuel MARTIN GM4
Enfin, un grand nombre de fonctions ont été codées afin de vérifier qu'aucun
utilisateur malveillant ne puisse manipuler de données non autorisées : par
exemple tout ce qui résulte d'un formulaire modifiable par l'utilisateur est
parsé afin d'éliminer les caractères ésotériques (des guillemets permettant de
couper une commande SQL notamment).
26/41
Samuel MARTIN GM4
A) Les fonctionnalités
– Un système de messagerie :
27/41
Samuel MARTIN GM4
Ici aucun fichier n'a encore été publié, et de même la section Autorisations est
effacée.
28/41
Samuel MARTIN GM4
– Un module de recherche :
29/41
Samuel MARTIN GM4
Les liens Consulter ouvrent la page suivante (ici pour le groupe Professionnel)
30/41
Samuel MARTIN GM4
31/41
Samuel MARTIN GM4
Le format du fichier doit être un cvs (fichier texte formaté, Excel peut par
exemple exporter ses tableaux dans un tel format).
Elle est très semblable à l'interface de gestion des partenaires, mais elle est
dédiée à la gestion des entreprises et écoles partenaires de l'institut.
Cet ensemble de pages est disponible aux professeurs et élèves pour recenser
et gérer les différentes classes ainsi que les cours associés :
32/41
Samuel MARTIN GM4
33/41
Samuel MARTIN GM4
Cette interface est destinée à suivre les différentes commandes passées à des
fournisseurs par l'institut. De même les fournisseurs peuvent mettre à jour
l'avancement des commandes par cette interface.
Étant donné qu'aucun mot de passe n'est stocké en clair dans la base de
donnée, il peut parfois être nécessaire de devoir réattribuer un mot de passe à
un utilisateur. En cas de perte par exemple, ou si le mot de passe a été
divulgué.
34/41
Samuel MARTIN GM4
35/41
Samuel MARTIN GM4
Voici l'aspect final de la base de donnée, telle qu'elle est exploitée par
l'intranet :
36/41
Samuel MARTIN GM4
37/41
Samuel MARTIN GM4
38/41
Samuel MARTIN GM4
Étant donné que la sécurité des données fut un aspect essentiel de ce projet, il
me semble important de décrire succinctement les différentes fonctions
développées afin de sécuriser le transfert des informations.
session_start();
include("config/config.php");
if(!isset($_SESSION['last_access']) || !isset($_SESSION['ipaddr']) || !isset($_SESSION['user']))
{
$_SESSION=array();
session_destroy();
header("Location: ".$LOGIN_PAGE);
die();
}
if(time()-$_SESSION['last_access']>$SESSION_TIMEOUT)
{
$_SESSION=array();
session_destroy();
header("Location: ".$LOGIN_PAGE);
die();
}
if($_SERVER['REMOTE_ADDR']!=$_SESSION['ipaddr'])
{
$_SESSION=array();
session_destroy();
header("Location: ".$LOGIN_PAGE);
die();
}
Ce morceau sert à vérifier par différents moyens que l'utilisateur est bien le
même d'une page à l'autre, et qu'il n'est pas resté trop longtemps inactif.
$test=FALSE;
for($i=0;$i<sizeof($champs);$i++)
{
if (($CHEMIN_USERS.$champs[$i])==$PAGE)
$test=TRUE;
}
if(!$test){
$_SESSION=array();
session_destroy();
header("Location: ".$LOGIN_PAGE);
die();}
$_SESSION['last_access']=time();
Ce code sert à vérifier que la page consultée est bien autorisée pour
l'utilisateur (la liste des pages autorisées est contenu dans la variable
$champs, qui provient d'une requête SQL sur la base de données).
39/41
Samuel MARTIN GM4
function CheckUser($login,$mdp)
{
$login=mysql_real_escape_string($login);
$result=mysql_query("SELECT * FROM users WHERE login='$login'");
if (mysql_num_rows($result)>0)
{
$data=mysql_fetch_array($result);
$mdp_sha=sha1($mdp.$data['gds']);
if(($data['login']==$login) && ($data['pwd']==$mdp_sha))
{
return true;
}
}
return false;
}
function sec_txt($texte)
{
$secu=htmlentities($texte, ENT_QUOTES, 'UTF-8');
return $secu;
}
Cette fonction parcourt une variable texte et supprime les caractères pouvant
être interprétés (quotes, balises html...).
function test_nom($nom)
{
return preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $nom);
}
Cette fonction est appelée lors de l'upload d'un fichier, pour vérifier que son
nom ne contient aucun caractère susceptible d'être interprétés par le serveur.
Ce sont les principales fonctions que j'ai développé pour sécuriser le transfert
des informations. Bien entendu d'autres ont été utilisé. Par exemple les
fonctions php mysql_real_escape_string() pour vérifier la présence de
caractères indésirables, ou encore sha1() afin de crypter les mots de passe.
40/41
Samuel MARTIN GM4
CONCLUSION
J'ai donc dû pendant la première partie de mon stage réaliser une importante
auto-formation. Heureusement Internet est très fourni en cours et ressources
concernant ces technologies, et j'ai donc pu beaucoup apprendre dans ce
domaine.
De plus il m'a été laissé une grande liberté dans le choix des méthodes et
outils à employer pour arriver au résultat, ce qui m'a permis de comparer les
différents langages et programmes que je pouvais utiliser, et de faire les choix
technologiques que je jugeais les plus adaptés. Cette partie du projet, qui
précède le développement, m'a paru très importante car elle conditionne
l'ensemble de la suite de ce stage.
41/41