Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Mémoire de Licence: Département

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 56

République Algérienne Démocratique et Populaire

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique


Université des Sciences et de la Technologie Houari Boumediene

Faculté d’Informatique
Département ………

Mémoire de Licence
Filière: Informatique
Spécialité:

Thème : Conception et mise en œuvre d’un portail de


cybersécurité

Présenté par : Proposé par :


- BOUZARA Zakaria - Mme GUEMRAOUI Lila
- TAHRAOUI Dhia-Eddine - Mme BENSIMESSAOUD Sihem

Soutenu le : ../../….

Devant le jury omposé de:


- M. BERBAR AHMED……………………………………………….…. Présiden
- M. NEMOUCHI HAMZA……………………………………….………. Membre

Binôme n° : 006 / 2024


DEDICACES

Nous dédions ce travail à nos familles, elles nous ont dotés d'une éducation digne,
leur amour a fait de nous ce que nous sommes aujourd'hui.
Particulièrement à nos pères, pour le goût de l'effort qu'ils ont suscité en nous, de
par leur rigueur.
À nos mères, ceci est notre gratitude pour leur éternel amour, que ce rapport soit
le meilleur cadeau que nous puissions vous offrir.
À nos frères et sœurs, à tous les cousins et toutes les cousines, à nos tantes et nos
oncles, nous exprimons notre gratitude pour leur soutien et leurs encouragements
durant ces années d'études.
À toutes ces personnes qui ont toujours été présentes dans notre vie.

Bouzara Zakaria & Tahraoui Dhia Eddine

1
REMERCIEMENTS

Ce projet n'aurait pas pu aboutir sans le soutien et les conseils précieux de plusieurs personnes que
nous remercions chaleureusement.
Tout d'abord, nous exprimons notre profonde gratitude envers Madame GUEMRAOUI Lila et
Madame BENSIMESSAOUD Sihem , chercheurs au CERIST, ainsi qu'à leur équipe, pour leur
direction attentive et leurs conseils éclairés tout au long de l'élaboration de notre application et la
rédaction du document final.
Sa présence bienveillante et son expertise ont été d'une aide inestimable, et nous lui témoignons
ici notre plus sincère reconnaissance.
Nous tenons également à remercier Monsieur BERBAR Ahmed , Professeur à la Faculté
d'informatique, d'avoir présidé le jury de ce mémoire. Sa présence et son implication ont été
essentielles à la réussite de ce projet.
Enfin, nous exprimons notre gratitude envers Monsieur NEMOUR Hamza enseignant à la faculté
d'informatique, pour sa contribution à l'évaluation de notre travail. Nous sommes profondément
honorés par leur participation et leur soutien, et nous les remercions du fond du cœur pour leur
confiance et leur bienveillance.
RESUME

Avec les multiples défis de sécurité sur le web et la fréquence croissante des
attaques, nous sommes confrontés quotidiennement à des menaces en ligne. Une
solution consiste à sensibiliser efficacement la population aux cybermenaces. C'est
dans cette optique qu'est né ce projet visant à développer un site informatif
contribuant à la lutte contre ces menaces virtuelles. Toutefois, afin de garantir
également la sécurité de notre conception, nous avons établi un modèle qui guide
les concepteurs dans la prévention de ces menaces.

Mots clés: Sécurité web, cybersécurité, site informatif, WikayaNet, prévention des
menaces
ABSTRACT

With the numerous security challenges on the web and the increasing frequency of attacks,
we face online threats daily. One solution is to effectively raise awareness among the
population about cyber threats. This project aims to develop an informative website
contributing to the fight against these virtual threats. However, to ensure the security of our
design, we have established a standard model guiding designers in preventing these threats.

Keywords: Web security, cybersecurity, informative site, WikayaNet, threat prevention


TABLE DES MATIÈRS

DEDICACES ..................................................................................................................................................1
REMERCIEMENTS..........................................................................................................................................2
RESUME ......................................................................................................................................................3
TABLE DES MATIÈRS .....................................................................................................................................5
LISTE DES FIGURES ........................................................................................................................................8
LISTE DES TABLEAUX.....................................................................................................................................9
LISTE DES SIGLES ET ABRÉVIATIONS .......................................................................................................... 10
INTRODUCTION GÉNÉRALE ..........................................................................................................................1
CHAPITRE 1 : SECURITE DES APPLICATION WEB ..........................................................................................2
1. INTRODUCTION ................................................................................................................................2
2. APPLICATION WEB ............................................................................................................................2
2.1. DÉFINITION D’UNE APPLICATION WEB.....................................................................................2
2.2. FONCTIONNEMENT D’UNE APPLICATION WEB ........................................................................2
3. SÉCURITÉ DES APPLICATIONS WEB ..................................................................................................4
3.1. PROPRIETES CIA ........................................................................................................................4
3.2. APPLICATION WEB ET LES PROPRIETES CIA ..............................................................................4
4. PROBLEMES DE SECURITE LIES AUX APPLICATIONS WEB ................................................................5
4.1. VULNERABILITES .......................................................................................................................5
4.2. ATTAQUES.................................................................................................................................6
4.3. MENACES ..................................................................................................................................6
5. PRATIQUES DE SECURITE DANS LE DEVELOPPEMENT WEB .............................................................6
5.1. ATTAQUES.................................................................................................................................6
5.2. VULNERABILITES .......................................................................................................................6
5.3. MENACES ..................................................................................................................................7
6. CONCLUSION ....................................................................................................................................7
CHAPITRE 2 : CONCEPTION DU SITE WIKAYANET.........................................................................................8
1. INTRODUCTION ................................................................................................................................8
2. PRÉSENTATION DU PROJET ..............................................................................................................8
2.1. PRÉSENTATION DU SITE WIKAYANET .......................................................................................8
2.2. PUBLIC CIBLE .............................................................................................................................8
2.3. OBJECTIFS DE WIKAYANET........................................................................................................8
2.4. INTÉRÊT DE LA NOUVELLE VERSION DE WIKAYANET ...............................................................9
3. CONCEPTION DU SITE WIKAYANET ..................................................................................................9
3.1. SPÉCIFICATION DES BESOINS ................................................................................................. 10
3.2. MODELISATION DES EXIGENCES FONCTIONNELLES DU SITE ................................................ 11
3.3. CONCEPTION ARCHITECTURALE DU SITE WIKAYANET .......................................................... 12
3.4. CONCEPTION DE LA BASE DE DONNÉES ................................................................................ 13
4. RECOMMANDATIONS DE SÉCURITÉ .............................................................................................. 14
4.1. AUTHENTIFICATION ............................................................................................................... 14
4.2. GESTION DES UTILISATEURS .................................................................................................. 14
4.3. GESTION DU CONTENU.......................................................................................................... 15
4.4. GESTION DES EMAILS ............................................................................................................ 16
4.5. BASE DE DONNÉES ................................................................................................................. 16
5. Conclusion ..................................................................................................................................... 16
CHAPITRE 3 : IMPLEMENTATION ............................................................................................................... 17
1. INTRODUCTION ............................................................................................................................. 17
2. ENVIRONNEMENT DE TRAVAIL ...................................................................................................... 17
2.1. Matériel utilisé ....................................................................................................................... 17
2.2. Outils et Technologies de Développement ........................................................................... 17
3. Mise en œuvre ............................................................................................................................... 18
3.1. Configuration de l’Environnement de Développement ........................................................ 18
3.2. Développement de l’Interface Utilisateur ............................................................................. 19
3.3. Développement de la Logique Serveur ................................................................................. 20
3.4. Intégration et Gestion de la Base de Données ...................................................................... 23
3.5. Sécurité et Gestion des Authentifications ............................................................................. 24
3.6. Déploiement sur le Serveur de Local ..................................................................................... 25
3.7. Sauvegardes et Maintenance ................................................................................................ 26
4. CONCLUSION ................................................................................................................................. 26
CHAPITRE 4 : TEST ET RESULTATS .............................................................................................................. 27
1. INTRODUCTION ............................................................................................................................. 27
2. PRESENTATION GENERALE DU SITE WIKANET .............................................................................. 27
2.1. PAGE D'ACCUEIL .................................................................................................................... 27
2.2. INTERFACE DE CONNEXION ................................................................................................... 29
2.3. INTERFACE ADMINISTRATEUR ............................................................................................... 29
2.4. INTERFACE MODERATEUR POUR LES MISES A JOUR DU SITE ............................................... 30
3. TESTS ET VALIDATION .................................................................................................................... 31
3.1. PROCESSUS D’AUDIT DE SÉCURITÉ DU SITE WIKAYANET .................................................. 31
3.2. ETUDE COMPARATIVE DES RESULTATS D’AUDIT .................................................................. 31
3.3. SYNTHESE............................................................................................................................... 33
4. CONCLUSION ................................................................................................................................. 33
CONCLUSION GENERALE ET PERSPECTIVES............................................................................................... 34
BIBLIOGRAPHIE .......................................................................................................................................... 35
ANNEXES .............................................................................................................. Erreur ! Signet non défini.
1. ANNEXE A : SITE MAP DU SITE WIKAYANET .................................................................................. 37
2. ANNEXE B : FICHIER REQUIREMENTS.TXT ..................................................................................... 38
3. ANNEXE C : MESURES DE SECURITE APPROFONDIES SUPPLEMENTAIRES .................................... 39
4. ANNEXE D : CONFIGURATION DU CSP AU NIVEAU DU DJANGO ................................................... 39
5. ANNEXE E : CONFIGURATION DES COOKIES .................................................................................. 40
6. ANNEXE F : Commandes et Résultats de OpenSSL ........................................................................ 41
7. ANNEXE G: les fichiers de journalisation (logs) ............................................................................. 25
8. ANNEXE H : RAPPORT ZAP DE L'ANCIEN SITE WIKAYANET ........................................................... 43
9. ANNEXE I : RAPPORT ZAP DU NOUVEAU SITE ............................................................................... 44
LISTE DES FIGURES

Figure 1.1 : Architecture d’une application web ..........................................................................................3


.

Figure 2.1 : Diagramme de Cas d’Utilisation………………………………………………………………………………………….12


Figure 2.2 : Architecture du Site WIKAYANET………………………………………………………………………………………..12
Figure 2.3 : Processus de Connexion et d’authentification…………………………………………………………………… 15
.

Figure 4. 1 : Interface d’accueil……………………………………………………………………………………………………………..27


Figure 4.2 : Menu principale du site………………………………………………………………………………………………………28
Figure 4.3 : Formulaire de l'abonnement au newsletter………………………………………………………………………. 28
Figure 4.4 : Interface de connexion et réinitialisation du mot de passe…………………………………………………29
Figure 4.5 : Interface administrateur (modification du compte)…………………………………………………………… 29
Figure 4.6 : Interface administrateur (liste des utilisateurs…………………………………………………………………… 30
Figure 4.7 : Interface modérateur………………………………………………………………………………………………………… 30
.

Figure. 1 : Site map de Wikayanet………………………………………………………………………………………………………… 37


Figure. 2 : contenu du fichier requirment.txt……………………………………………………………………………………….. 38
Figure. 3 : En tête http…………………………………………………………………………………………………………………………. 39
Figure. 4 : Devtool qui illustre le refus d’un script non autorisées………………………………………………………… 40
Figure. 5 : Configuration des cookies dans DevTools de Chrome………………………………………………………….. 40
Figure. 6 : Création du certificat…………………………………………………………………………………………………………… 41
Figure. 7 : Affichage du certificat…………………………………………………………………………………………………………..42
Figure. 8 : ZAP Rapport (ancien site)……………………………………………………………………………………………………..43
Figure. 9 : ZAP Rapport (nouveau site) ………………………………………………………………………………………………….44
LISTE DES TABLEAUX

Tableau 2.1 : Les fonctionnalités du site web ........................................................................................... 11


Tableau 4.1 : Les différentes section du site ............................................................................................. 28
Tableau 4.2 : Résultats de test (Ancien version) ....................................................................................... 32
Tableau 4.3 : Résultats de test (Nouvelle version) .................................................................................... 32
LISTE DES SIGLES ET ABRÉVIATIONS

API : Application Programming Interface


CMC : Content Management System
CRUD : Create Read Update Delete
CSP : Content Security Policy
CSRF : Cross-Site Request Forgery
CSS : Cascading style sheet
CSV : comma separated values
HTML : Hyper Text Marked Language
HTTP : Hypertext Transfer Protocol
IP : Internet Protocole
IT : Information Technology
JSON : JavaScript Object Notation
JWT : Json Web Token
MD : MarkDown Language
MySQL : My Structured Query Language
OTP : One Time Password
OWASP : Open Web Application Security Project
PDF : Portable Document Format
PHP : Hypertext Preprocessor
SMTP : Simple Mail Transfer Protocol
SQL : Structured Query Language
SSL : secure sockets layer
TLS : Transport Layer Security
UML : Unified modeling language
UI : User Interface
URL : Uniform Resource Locator
WASC : Web Application Security Consortium
XAMPP : Cross-Platform (X) Apache, MySQL, PHP Perl
XSS : Cross-Site Scripting
ZAP : Zed Attack Proxy
INTRODUCTION GÉNÉRALE

Avec la prolifération des problèmes de sécurité sur le web et la multiplication des attaques, nous
sommes confrontés quotidiennement à un paysage numérique plein de menaces potentielles. Pour
contrer cette réalité, l'une des approches les plus efficaces est de garantir une sensibilisation
adéquate de la population aux cyber-risques. C'est dans cette perspective qu'a été élaboré ce projet,
qui vise à concevoir un site informatif dédié à la lutte contre ces cybermenaces.
Ce site informatif aura pour objectif de fournir des informations claires et accessibles sur les
différentes formes d'attaques en ligne, les techniques d'attaque courantes, ainsi que les meilleures
pratiques de prévention et de protection. Il servira également de plateforme d'éducation, offrant
des ressources pédagogiques et des conseils pratiques pour aider les utilisateurs à se prémunir
contre les menaces virtuelles.
Cependant, la sécurité de ce site est primordiale. Nous aspirons à ce que sa conception soit robuste
et résiliente face aux tentatives d'intrusion et aux attaques malveillantes. Ainsi, nous envisageons
de mettre en place un cadre de sécurité solide, intégrant des normes et des bonnes pratiques de
développement sécurisé.
Dans cette optique, nous souhaitons créer un canevas détaillé, décrivant les mesures de sécurité à
intégrer à chaque étape du processus de conception et de développement du site. Ce canevas
servira de guide pratique pour les concepteurs, en leur fournissant des directives claires et
spécifiques pour éviter les principales menaces en ligne, telles que les attaques par injection SQL,
les attaques de type cross-site scripting (XSS), ou encore les attaques de force brute.
En résumé, notre objectif est de créer un site informatif efficace dans la lutte contre les
cybermenaces, tout en garantissant sa sécurité grâce à l'implémentation de bonnes pratiques de
développement sécurisé.
Les objectifs de notre projet comprennent :
 Conception d'un site internet destiné à servir de source d'information en matière de
cybersécurité. Ce site propose une documentation exhaustive, actualisée régulièrement,
ainsi que des lignes directrices visant à soutenir et à améliorer le niveau de cybersécurité
au sein de notre communauté.
 Développer une architecture de site web sécurisée, mettant l'accent sur la confidentialité,
l'intégrité et la disponibilité des données.
 Implémenter des mécanismes d'authentification et d'autorisation des utilisateurs robustes
pour contrôler l'accès aux informations et fonctionnalités sensibles.
 Appliquer des pratiques de codage sécurisé pour atténuer les vulnérabilités courantes.
Outre cette introduction, le présent manuscrit est subdivisé en quatre chapitres :
Chapitre 1 : Présente une vue d’ensemble des concepts qui découlent du domaine de la cybersécurité.
Chapitre 2 : Détaille notre approche. Notre méthodologie y est décrite et les différentes étapes y sont
présentées.
Chapitre 3 : Présente l’environnement de développement (matériel et logiciel), les langages de
programmation, les librairies et les algorithmes utilisés pour le développement de notre système.
Chapitre 4 : Le dernier chapitre présente le produit final obtenu avec les résultats des tests.
1
CHAPITRE 1 : SECURITE DES APPLICATIONS WEB

1. INTRODUCTION

Les applications web, omniprésentes dans notre quotidien, nous permettent d’accomplir une
multitude de tâches en ligne. Cependant, leur nature connectée les expose à des cyber-menaces
qui nécessitent une vigilance constante. La sécurité des applications web est donc primordiale
pour protéger les données sensibles, garantir la continuité de service et préserver la confiance des
utilisateurs.
Pour ce faire, il est essentiel de mettre en œuvre des mesures de protection adéquates. Il est
également crucial de se tenir informé des dernières menaces et vulnérabilités afin d’adapter
proactivement sa stratégie de sécurité.
Ce chapitre sera consacré à l’étude des applications web et plus particulièrement à leur sécurité,
où nous introduirons des généralités sur la sécurité informatique, ensuite nous étudierons les
principaux défis de sécurité auxquels les applications web sont confrontées, et les solutions
existantes pour pallier ces problèmes. Nous terminons notre chapitre avec une conclusion.

2. APPLICATION WEB

2.1. DÉFINITION D’UNE APPLICATION WEB

Une application web est un logiciel accessible via un navigateur web, ne nécessitant pas
d'installation sur l'appareil de l'utilisateur. Hébergée sur des serveurs distants, elle offre diverses
fonctionnalités allant de simples pages statiques à des plates-formes interactives et complexes.
Les applications web sont généralement développées en utilisant des langages de programmation
tels que HTML, CSS et JavaScript, et peuvent s'appuyer sur des technologies côté serveur comme
PHP, Python, Ruby, Java, ou .NET. Elles se distinguent par leur accessibilité multiplateforme,
leur facilité de déploiement et de mise à jour, ainsi que leur capacité à stocker et à traiter des
données de manière centralisée [1].

2.2. FONCTIONNEMENT D’UNE APPLICATION WEB

L'architecture des applications web (figure 1.1) est souvent divisée en deux parties distinctes : le
"front-end" (ou client-side) et le "back-end" (ou server-side). Ci-après une explication de chacun
de ces éléments :

2.2.1. FRONT-END (COTE CLIENT)


 Le front-end désigne la partie de l'application web qui est exécutée sur l'appareil de
l'utilisateur (généralement dans un navigateur web). Elle se compose de l'interface utilisateur
visible et des fonctionnalités interactives que les utilisateurs voient et avec lesquelles ils
interagissent.

2
 Les langages et technologies couramment utilisés pour le front-end incluent HTML
(HyperText Markup Language) pour la structure, CSS (Cascading Style Sheets) pour la
présentation et la mise en forme, et JavaScript pour l'interactivité dynamique.
 Les frameworks et bibliothèques JavaScript populaires comme React.js, Angular, et Vue.js
sont souvent utilisés pour simplifier le développement front-end et créer des interfaces
utilisateur complexes et réactives.

2.2.2. BACK-END (COTE SERVEUR)


 Le back-end est la partie de l'application web qui s'exécute sur le serveur distant et qui
gère les opérations telles que le traitement des requêtes des clients, l'accès aux bases de
données, et la logique métier.
 Il est responsable du stockage et de la manipulation des données, de l'authentification et
de l'autorisation des utilisateurs, ainsi que de la gestion de la sécurité et des performances
de l'application.
 Les langages et frameworks populaires pour le développement back-end incluent Node.js,
PHP, Python (avec Django ou Flask), Ruby on Rails, Java (avec Spring ou Jakarta EE), et
.NET.
 Le back-end communique souvent avec le front-end via des API (Application
Programming Interfaces), permettant un échange de données entre les deux côtés de
l'application.

En résumé, le front-end est responsable de ce que les utilisateurs voient et avec quoi ils
interagissent dans une application web, tandis que le back-end gère les opérations invisibles et les
fonctionnalités qui sont exécutées sur le serveur distant. Ensemble, ces deux composants
travaillent en harmonie pour fournir une expérience utilisateur complète et fonctionnelle.

Figure 1.1 : Architecture d’une application web

3
3. SÉCURITÉ DES APPLICATIONS WEB

3.1. PROPRIETES CIA

Les propriétés CIA (Confidentialité, Intégrité, Disponibilité) sont les piliers fondamentaux de la
sécurité de l'information. Voici un résumé de chacune de ces propriétés [ ]:
1. Confidentialité : Garantit que seules les personnes autorisées ont accès aux
informations sensibles. Cela implique la protection contre l'accès non autorisé, la
divulgation ou la fuite d'informations confidentielles.
2. Intégrité : Assure l'exactitude, la complétude et la fiabilité des données et des systèmes
d'information. L'intégrité garantit que les données ne sont pas altérées de manière non
autorisée tout au long de leur cycle de vie.
3. Disponibilité : Garantit que les données et les systèmes d'information sont accessibles
et fonctionnels lorsque nécessaire. Cela implique la prévention des interruptions de
service et la fourniture de ressources informatiques fiables et opérationnelles pour
répondre aux besoins des utilisateurs.

En combinant ces trois propriétés, les organisations peuvent établir une base solide pour assurer
la sécurité et la protection de leurs informations contre les menaces internes et externes, tout en
garantissant une expérience utilisateur fiable et sécurisée.

3.2. APPLICATION WEB ET LES PROPRIETES CIA

Lorsqu'il s'agit de la sécurité des applications web, les concepts d'intégrité, de confidentialité et
de disponibilité demeurent essentiels. Voici comment ces principes s'appliquent spécifiquement
aux applications web :

1. Confidentialité : Pour assurer la confidentialité des données dans une application web, il est
nécessaire d'adopter des mesures de protection appropriées pour empêcher l'accès non autorisé
aux informations sensibles. Cela implique généralement l'utilisation de techniques de chiffrement
pour sécuriser les données sensibles, en particulier lors de leur transmission sur le réseau. Les
protocoles de sécurité tels que HTTPS sont souvent utilisés pour garantir que les communications
entre le client et le serveur sont sécurisées et confidentielles. De plus, les pratiques de gestion des
identités et des accès (IAM) peuvent être utilisées pour contrôler l'accès aux ressources et aux
fonctionnalités de l'application, en garantissant que seuls les utilisateurs autorisés peuvent accéder
aux données sensibles.

2. Intégrité : Pour assurer l'intégrité des données dans une application web, il est crucial de mettre
en place des mécanismes de protection contre les altérations non autorisées des données. Cela peut
inclure l'utilisation de techniques de validation des entrées pour prévenir les attaques par injection,
telles que les injections SQL, et l'implémentation de contrôles de sécurité pour garantir que les
données sont stockées, transmises et manipulées de manière sûre et fiable. De plus, l'utilisation
des techniques de sécurité telles que les hachages cryptographiques peuvent garantir l'intégrité des
données stockées et échangées entre le client et le serveur.

4
3. Disponibilité : La disponibilité des applications web fait référence à leur capacité à être
accessibles et fonctionnelles lorsque les utilisateurs en ont besoin.
Pour garantir la disponibilité, il est important de mettre en place des mécanismes de surveillance
et de gestion des performances pour détecter et répondre rapidement à tout incident qui pourrait
affecter la disponibilité de l'application. Cela peut inclure la mise en place de plans de reprise
d'activité et de sauvegardes régulières pour assurer la continuité des opérations en cas de panne
ou d'incident majeur. De plus, l'utilisation de l'équilibrage de charge et de la mise en cache peut
contribuer à améliorer les performances et la disponibilité de l'application en répartissant la charge
sur plusieurs serveurs et en réduisant les temps de réponse pour les utilisateurs.

En combinant ces principes d'intégrité, de confidentialité et de disponibilité, les développeurs


d'applications web peuvent créer des systèmes robustes et sécurisés qui protègent les données
sensibles tout en assurant une expérience utilisateur fiable et accessible.

4. PROBLEMES DE SECURITE LIES AUX APPLICATIONS WEB

Les applications web sont exposées à une diversité de problèmes de sécurité en raison de leur
présence sur Internet et de la complexité croissante de leurs fonctionnalités. Le Web Application
Security Consortium (WASC) [2] énumère les principaux problèmes rencontrés par ces
applications. Dans la suite, nous présentons les plus courants parmi eux.
Nous allons maintenant examiner de manière détaillée ces problèmes en les classant selon le type
d'attaque, de menace ou de vulnérabilité [3].

4.1. VULNERABILITES

 Vulnérabilités d'authentification et d'autorisation : Les erreurs dans la gestion de


l'authentification et de l'autorisation peuvent permettre à des utilisateurs non autorisés
d'accéder à des fonctionnalités ou à des données sensibles.
 Exposition de l'API : Une configuration incorrecte des API peut entraîner l'exposition de
données sensibles.
 Vulnérabilités des frameworks et des bibliothèques : Les applications web utilisant des
frameworks et des bibliothèques tierces peuvent contenir des vulnérabilités exploitables
par des attaquants.
 Gestion des sessions et des cookies : Les vulnérabilités dans cette gestion peuvent
permettre à des attaquants de voler des sessions utilisateur ou de falsifier des cookies pour
usurper l'identité d'un utilisateur légitime.
 Transmission de données non sécurisées : Les données sensibles transmises peuvent être
interceptées si les communications ne sont pas sécurisées à l'aide de protocoles tels que
HTTPS.
 Contrôles d'entrée et de sortie : Les données transmises doivent être soigneusement
validées pour prévenir les attaques par injection et assurer l'intégrité des données
échangées.

5
4.2. ATTAQUES

 Injection SQL : Permet à un attaquant d'exécuter des requêtes SQL non autorisées sur la
base de données, compromettant l'intégrité des données stockées.
 Cross-Site Scripting (XSS) : Permet à un attaquant d'injecter du code JavaScript
malveillant dans les pages web consultées par d'autres utilisateurs, compromettant la
confidentialité et l'intégrité des données.
 Attaques de contournement côté client : Les attaquants peuvent contourner les
mécanismes de sécurité côté client, tels que la validation des entrées, pour mener des
attaques par manipulation de formulaire ou par falsification de requêtes.
 Attaques par force brute ou par injection via API : Une mauvaise configuration ou une
utilisation inappropriée des API peut permettre ces types d'attaques.

4.3. MENACES

 Compromission de l'intégrité des données : Par des attaques comme l'injection SQL,
des attaquants peuvent altérer ou supprimer des données.
 Vol de données sensibles : À travers des vulnérabilités telles que l'exposition de l'API ou
des attaques XSS, des attaquants peuvent accéder à des informations sensibles.
 Usurpation d'identité : Via la gestion des sessions et des cookies, des attaquants peuvent
usurper l'identité des utilisateurs légitimes.
 Interception de données : La transmission non sécurisée des données peut exposer ces
dernières à des interceptions non autorisées.

5. PRATIQUES DE SECURITE DANS LE DEVELOPPEMENT WEB

Les pratiques de développement web sécurisé consistent en l'application de techniques, de normes


et de méthodologies visant à réduire les risques de sécurité lors de la conception, du
développement et de la maintenance de sites web.
En effet, pour atténuer les risques de sécurité liés aux applications web, les développeurs doivent
mettre en œuvre des pratiques de développement sécurisé : du côté back-end, du côté front-end et
dans les interactions entre les deux.
En appliquant ces stratégies de sécurité, les développeurs peuvent renforcer efficacement la
sécurité des applications web et réduire les risques d'attaques et de violations de données [4].

Dans ce contexte, nous avons mené une étude sur les meilleures pratiques de sécurité que les
développeurs web doivent mettre en place pour contrer les attaques, les menaces et les
vulnérabilités potentielles. Nous soulignons ici les plus cruciales parmi elles.

5.1. VULNERABILITES

 Sécurité de l'authentification et de l'autorisation : Utiliser des protocoles


d'authentification sécurisés comme OAuth et OpenID Connect, et appliquer des politiques
d'autorisation strictes pour limiter l'accès aux ressources sensibles.

6
 Validation des données côté client : Effectuer une validation des données côté client pour
prévenir les erreurs de saisie et les attaques XSS, tout en gardant à l'esprit que la validation
côté client ne remplace pas la validation côté serveur.
 Sécurité des cookies et des sessions : Utiliser des mécanismes sécurisés de gestion des
sessions et des cookies, comme l'attribut Secure et HttpOnly pour les cookies, afin de
prévenir les attaques de vol de session et de falsification de cookies.
 Sécurité des API : Authentifier et autoriser les demandes d'API de manière sécurisée en
utilisant des mécanismes tels que les jetons JWT (JSON Web Tokens) ou les clés d'API,
et mettre en œuvre des contrôles d'accès basés sur les rôles pour limiter l'accès aux
ressources de l'API.

5.2. ATTAQUES

 Validation et filtrage des entrées : Mettre en œuvre des mécanismes de validation


rigoureux pour toutes les données entrantes afin de prévenir les attaques par injection SQL,
XSS et autres types d'injection.
 Protection contre les injections : Utiliser des requêtes préparées ou des procédures
stockées pour empêcher les attaques par injection SQL et mettre en œuvre des contrôles
de sécurité tel que la liste blanche pour les données entrantes.
 Protection contre les attaques XSS : Encoder correctement les données affichées dans
les pages web pour éviter les attaques XSS, et utiliser des bibliothèques de sécurité comme
Content Security Policy (CSP) pour renforcer la sécurité du navigateur.

5.3. MENACES

 Communication sécurisée : Utiliser des protocoles de communication sécurisés comme


HTTPS pour chiffrer les données sensibles transitant entre le serveur et le navigateur, afin
de prévenir les interceptions et les écoutes malveillantes.
 Protection contre les attaques CSRF : Mettre en œuvre des jetons anti-CSRF (Cross-
Site Request Forgery) pour protéger les actions sensibles contre les requêtes forgées
provenant de sites tiers.

6. CONCLUSION

Dans ce chapitre, nous avons exposé les risques de sécurité les plus dangereux recensés par l’Open
Web Application Security Project. Le principe de chacune des failles a été exposé, ensuite nous
avons présenté l’ensemble des pratiques de sécurité majeures pour se prémunir contre ces risques
notamment les attaques.
Dans le chapitre suivant, nous allons mettre en œuvre ces recommandations en concevant le site
Wikayanet. Ce site prendra en considération toutes les règles de sécurité formulées dans ce
chapitre afin d'assurer un niveau de sécurité optimal et efficace.

7
CHAPITRE 2 : CONCEPTION DU SITE WIKAYANET

1. INTRODUCTION

Afin de mettre en pratique notre étude sur le développement sécurisé des applications web, nous
avons opté pour l'application des recommandations énoncées dans le chapitre précédent à notre
projet. Celui-ci consiste en la conception d'un site web dédié à la diffusion d'actualités relatives à
la sécurité, dans le but de fournir une plateforme robuste permettant aux utilisateurs d'accéder à
des informations à jour sur ce sujet crucial. L'objectif principal de ce site est de diffuser des
actualités, des articles, des guides, des outils et des ressources spécialisées en cybersécurité.
Ce chapitre se concentrera sur la concrétisation des recommandations énoncées précédemment en
détaillant les différentes étapes du développement du site web.

2. PRÉSENTATION DU PROJET

2.1. PRÉSENTATION DU SITE WIKAYANET

WikayaNet, dont le nom s'inspire du mot arabe « Wikaya ( ‫ = ) وقاية‬prévention », a été conçu et
développé initialement par l'ex Laboratoire des Logiciels de Base (LLB), dénommé autrefois
Division des Théories et Ingénierie Informatique (DTISI) et actuellement Division Sécurité
Informatique (DSI), du Centre de Recherche sur l'Information Scientifique et Technique
(CERIST).
WikayaNet est un portail de sécurité fournissant de l'information objective, opportune et détaillée
pour tous les membres de la communauté sécurité, allant des utilisateurs finaux et des
administrateurs réseaux jusqu'aux consultants en sécurité, et IT managers. Wikayanet se veut être
une source d'information, en matière de sécurité informatique.

2.2. PUBLIC CIBLE

Le site wikayanet cible un public constitué de :


 Particuliers soucieux de protéger leurs systèmes et leurs données personnelles.
 Professionnels de l’informatique : Administrateurs système, réseaux et sécurité.
 Décideurs et responsables d'entreprises.
 Étudiants en informatique et cybersécurité.
 Ou simplement, toute personne intéressée par la cybersécurité.

2.3. OBJECTIFS DE WIKAYANET

Ce site a pour objectif d'assister la communauté algérienne en terme de veille en leur offrant toute
l'information nécessaire concernant les alertes, les vulnérabilités et les attaques possibles.
Ses principaux objectifs sont :
 Sensibiliser le public aux enjeux de la cybersécurité.

8
 Fournir aux utilisateurs des informations et des ressources fiables pour se protéger
contre les cybermenaces.
 Promouvoir les bonnes pratiques de sécurité informatique.
 Aider les organisations à renforcer leur posture de sécurité informatique.
 Contribution à la création d'un cyberespace plus sûr et plus résilient.
 Réduction du nombre de cyberattaques et des incidents de sécurité.

2.4. INTÉRÊT DE LA NOUVELLE VERSION DE WIKAYANET

La version précédente du site Wikayanet a été développée à l'aide du système de gestion de


contenu (CMS) Joomla [5], reconnu pour sa robustesse et sa facilité d'utilisation. Cependant, il est
important de noter que ce CMS présente des inconvénients majeurs, notamment sa vulnérabilité
et le fait que la gestion du back-end est entièrement prise en charge par le CMS lui-même.
En effet, bien que les CMS, comme Joomla, offrent de nombreux avantages en termes de facilité
d'utilisation et de robustesse, ils présentent également des inconvénients significatifs en termes de
sécurité, performance, flexibilité, etc. Dont nous citons, principalement [6]:

 Vulnérabilités : Les CMS populaires sont des cibles fréquentes pour les hackers en raison
de leur large adoption. Les failles de sécurité, si elles ne sont pas rapidement corrigées,
peuvent être exploitées pour des attaques.
 Mises à jour fréquentes et gestion des plugins : Les CMS nécessitent des mises à jour
régulières, tant pour le système principal que pour les plugins et thèmes. Une mauvaise
gestion de ces mises à jour peut entraîner des incompatibilités et des failles de sécurité.
 Flexibilité limitée : Bien que les CMS offrent une grande variété de fonctionnalités, ils
peuvent être limités lorsqu'il s'agit de personnaliser des fonctionnalités spécifiques ou des
designs complexes. Les solutions sur mesure sont souvent nécessaires pour des besoins
très particuliers.
 Dépendance aux extensions tierces : La fonctionnalité d'un CMS repose souvent sur des
extensions tierces. Ces extensions peuvent devenir obsolètes ou ne plus être maintenues,
ce qui pose des problèmes de sécurité et de compatibilité.

En effet, après l'audit de l'ancienne version du site Wikayanet (voir l’annexe D), nous avons
constaté plusieurs vulnérabilités de sécurité. Cela démontre que, malgré les progrès réalisés,
l'utilisation des CMS présente encore des obstacles en matière de sécurité.

Par conséquent, nous avons proposé une nouvelle conception du site qui intègre des mesures de
sécurité tout au long du cycle de développement afin de pallier les inconvénients identifiés avec
les CMS. Ainsi, la refonte de WikayaNet revêt une importance cruciale pour répondre aux besoins
croissants de la communauté de la sécurité informatique.

3. CONCEPTION DU SITE WIKAYANET

Dans ce qui suit, nous allons présenter la conception générale du site, en se basant sur la
conception UML [7] qui décrit les interactions entre les différents acteurs et les fonctionnalités
9
principales du système. Nous aborderons principalement les cas d'utilisation, et d'autres éléments
clés pour illustrer comment le site sera structuré et fonctionnera.

3.1. SPÉCIFICATION DES BESOINS

Dans cette phase de la conception, nous examinerons les exigences spécifiques du site, à la fois
fonctionnelles et techniques.

3.1.1 BESOINS FONCTIONNELLES

Les besoins fonctionnels sont les exigences qui décrivent les fonctionnalités et les actions qu'un
système doit être capable d'accomplir pour répondre aux attentes de l'utilisateur.

Pour WikayaNet, nous avons synthétisé ses exigences fonctionnelles de la manière suivante :
 Gestion des utilisateurs :
o Création de comptes utilisateurs avec authentification sécurisée (mots de passe
complexes, authentification à deux facteurs ou 2FA, etc.).
o Gestion des rôles et des privilèges des utilisateurs.
o Authentification et autorisation des utilisateurs pour accéder aux différentes
fonctionnalités du portail.
 Gestion du contenu :
o Publication d'actualités, d'articles, de guides, d'outils et de ressources liés à la
cybersécurité.
o Organisation du contenu par catégories et tags (mot clé utilisé pour faciliter la
recherche et le filtrage).
o Mise en place d'un système de recherche performant pour faciliter la recherche
d'informations.
 Gestion des alertes et des notifications :
o Mise en place d'un système d'alertes pour informer les utilisateurs des dernières
menaces et vulnérabilités.
o Possibilité pour les utilisateurs de s'abonner à des notifications personnalisées.
 Gestion des alertes et des notifications :
o Mise en place d'un système d'alertes pour informer les utilisateurs des dernières
menaces et vulnérabilités.
o Possibilité pour les utilisateurs de s'abonner à des notifications personnalisées.

3.1.2 CONTRAINTES TECHNIQUES

Une contrainte technique est une exigence spécifique liée aux capacités ou aux limitations des
systèmes, des logiciels ou des technologies utilisés dans un projet. Dont ce qui suit, nous citons
principalement :
 Performance : Le portail doit être capable de gérer un trafic important et de répondre aux
requêtes des utilisateurs de manière rapide et efficace.
 Sécurité : Le portail doit être conçu et développé de manière sécurisée pour protéger les
données des utilisateurs contre les accès non autorisés, les intrusions et les autres menaces.
10
 Scalabilité : Le portail doit être évolutif pour pouvoir s'adapter à une croissance du nombre
de et de la quantité de données.
 Accessibilité : Le portail doit être accessible à tous les utilisateurs.
 Compatibilité : Le portail doit être compatible avec les différents navigateurs web et les
appareils mobiles.

3.2. MODELISATION DES EXIGENCES FONCTIONNELLES DU SITE


Dans cette partie, nous allons identifier les différents acteurs du site ainsi que les fonctionnalités
associées. Autrement dit, nous allons fournir une vue d'ensemble claire de qui interagit avec le
système et comment ces interactions se déroulent.

3.2.1 IDENTIFICATION DES ACTEURS

1. Administrateur : Supervise la gestion des utilisateurs, crée des comptes, attribue des
privilèges et veille à la sécurité du site. Il est le gardien du site, assurant son bon
fonctionnement.
2. Modérateur : Responsable de la gestion du contenu. Il ajoute, modifie ou supprime le
contenu pour s'assurer qu'il est approprié et conforme aux directives du site. Il garantit la
qualité et la pertinence des informations, préservant l'intégrité du site et favorisant un
environnement de confiance.
3. Visiteur : Explore la richesse des connaissances en cybersécurité, consommant des
articles, des ressources et des outils pour améliorer sa protection. Il est la force motrice du
site, à la recherche d'informations précieuses.

3.2.2 FONCTIONNALITÉS DU SITE

Cette section présente les différentes fonctionnalités du site au moyen d'un diagramme de cas
d'utilisation, illustré dans la figure 2.1, et décrit en détail dans tableau 2.1. Ce diagramme offre
une vue d'ensemble des principales fonctionnalités du site ainsi que des interactions entre les
utilisateurs et le système.

Fonctionnalité Description
Permet aux utilisateurs (modérateurs et administrateurs) de s'authentifier
Connexion
et d'accéder à leur compte personnel
Permet aux administrateurs d'ajouter, modifier ou supprimer des comptes
Gérer les modérateurs
des modérateurs
Notification de Sécurité Envoie des alertes de sécurité aux utilisateurs et aux administrateurs.
Gérer le Contenu de site Permet aux modérateurs d'ajouter, modifier et supprimer des articles, des
web guides et d'autres contenus.
Consulter le contenu du Permet aux visiteurs de parcourir et de lire les articles, les guides, et autres
site contenus.
Authentification à deux Fournit une couche de sécurité supplémentaire en demandant une seconde
facteurs (2FA) forme d'authentification après l'entrée du mot de passe.
Tableau 2.1 : Les fonctionnalités du site web

11
Figure 2.1 : Diagramme de Cas d’utilisation

3.3. CONCEPTION ARCHITECTURALE DU SITE WIKAYANET

L'architecture globale du site WikayaNet, présentée dans la figure 2.2, est composée de plusieurs
couches et composants interconnectés. En effet, afin de concevoir le site, nous avons opté pour
une approche de développement modulaire, visant à réduire sa complexité et à faciliter sa
maintenance et sa réutilisabilité.

Figure 2.2 : Architecture du Site WIKAYANET

12
Nous avons segmenté notre application en petites unités, représentant les composants clés, les flux
de données, les interfaces, les mécanismes de communication, etc. Ensuite, à travers un modèle
architectural général, nous avons déterminé comment ces différents composants sont organisés,
interagissent et fonctionnent ensemble pour répondre aux besoins fonctionnels et non fonctionnels
du site.
La structure fondamentale de WikayaNet comprend les modules suivants :
 Interface utilisateur (UI) incluant des pages web et des interfaces de gestion.
 Serveur web pour gérer les requêtes HTTP et distribuer le contenu,
 Application backend intégrant une API REST pour le traitement des requêtes, la gestion
de l'authentification et des utilisateurs.
 Base de données relationnelle pour le stockage des données.
 Services de sécurité comprenant un chiffrement (TLS/SSL) et mécanismes
d’authentification.
 Services de newsletter avec un serveur SMTP pour l'envoi d'e-mails et la vérification des
comptes.
 Services de surveillance et de journalisation utilisant des systèmes de logs pour
surveiller les activités, détecter les anomalies et réaliser des audits de sécurité.

3.4. CONCEPTION DE LA BASE DE DONNÉES

Pour la gestion de notre site, nous avons conçu une base de données comprenant huit tables
distinctes. Parmi celles-ci, des tables sont dédiées à l'archivage des différents contenus du site, tels
que les articles, les actualités, les outils, etc., tandis que d’autres contiennent les références des
utilisateurs.
Dans cette partie, nous exposons notre conception de la base de données du site :
1. Article : Représente un article lié à la sécurité, contenant des champs tels que le titre, le
contenu, l'auteur, la date de publication et la catégorie.
2. News : Stocke des éléments d'actualités en matière de sécurité, comprenant le titre, la
description, la date de publication et la source.
3. Documents : Représente soit des guides, livres ou raports avec des champs pour le titre,
la description, le fichier (pour le stockage PDF) et la catégorie.
4. Outil : Stocke des informations sur les outils de sécurité, incluant le nom, la description,
le lien et la catégorie.
5. Cours en ligne : Représente des cours en ligne sur des sujets de sécurité, avec des champs
pour le titre, la description, la plateforme et la catégorie.
6. Alerte : Stocke les alertes de sécurité avec des champs pour le titre, la description, le
niveau de gravité, la date de publication et l'auteur.
7. UsefulLink : Stocke des liens utiles avec des champs pour le titre, la description et l'URL.
8. ExpertWord : Stocke les citations d'experts avec des champs pour le titre, l'auteur, la
citation et la date de publication.
9. Admin: Représente les administrateurs du système avec des champs pour le nom, l'email,
le mot de passe, et les privilèges administratifs.

13
10. Moderator: Représente les modérateurs avec des champs pour le nom, l'email, le mot de
passe, et les sections qu'ils modèrent.
11. ActiveUser: Stocke les utilisateurs actifs en temps réel, incluant les champs pour le nom
d'utilisateur, l'ID utilisateur, l'adresse IP, le navigateur et l'heure de la dernière activité.
12. NewsLetter: Stocke les abonnés à la newsletter avec des champs pour le nom, l'email et
la date d'abonnement.

4. RECOMMANDATIONS DE SÉCURITÉ

Dans le cadre de notre démarche visant à garantir la sécurité de WikayaNet, nous avons élaboré
un ensemble de mesures spécifiques pour chaque fonctionnalité du site, ainsi que pour la
protection de la base de données [8].

Pour chaque aspect fonctionnel, nous avons identifié les risques potentiels et mis en place des
contre-mesures adaptées, telles que l'authentification à deux facteurs pour les utilisateurs
administratifs, le chiffrement des données sensibles etc. Pour la sécurité de la base de données,
nous avons opté pour des pratiques telle que l'utilisation de techniques de cryptage pour garantir
la confidentialité des informations stockées.
Ces mesures, intégrées à chaque étape de la conception et du développement, visent à assurer un
environnement en ligne sécurisé et fiable pour les utilisateurs de WikayaNet.

Nous présenterons, dans ce qui suit, les diverses mesures que nous avons mises en place.

4.1. AUTHENTIFICATION

 Description : Le processus d'authentification est essentiel pour garantir que seuls les
utilisateurs autorisés peuvent accéder aux fonctionnalités du site. Nous avons mis en place
un système d'authentification robuste basé sur des identifiants uniques (noms d'utilisateur
ou adresses e-mail) et des mots de passe sécurisés.
 Mesures de sécurité
o Utilisation de pratiques de hachage sécurisées pour stocker les mots de passe des
utilisateurs.
o Mise en place de politiques de gestion des sessions pour prévenir les attaques de
session.
o Implémentation de la validation côté serveur pour éviter les attaques par force brute
ou par injection.
o L'utilisation de l'authentification à deux facteurs.

4.2. GESTION DES UTILISATEURS

 Description : L'interface d'administration de l'application des utilisateurs permet à


l'administrateur d'avoir un contrôle total sur les comptes utilisateur. Cela inclut la
visualisation, la modification, l'ajout et la suppression d'utilisateurs. De plus,

14
l'administrateur peut consulter les journaux des activités des utilisateurs et afficher les
utilisateurs actifs.
 Mesures de sécurité
o Authentification forte pour l'accès à l'interface d'administration, tel qu'illustré dans
l'organigramme de la figure 2.3.
o Attribution de privilèges stricts au administrateur pour garantir qu'ils ont
uniquement accès aux fonctionnalités nécessaires.

Figure 2.3 : Processus de Connexion et d’authentification

4.3. GESTION DU CONTENU

 Description : L'interface de gestion de contenu est réservée aux modérateurs et leur


permet d'ajouter, de modifier, de supprimer et de visualiser les différents types de contenus
sur le site.
 Mesures de sécurité
o Authentification sécurisée des modérateurs avec des privilèges limités pour accéder à
l'interface de gestion de contenu.
o Contrôles de validation des données d'entrée (texte,fichier,image) pour éviter les
injections de code malveillant ou les attaques de modification de contenu.

15
4.4. GESTION DES EMAILS

 Description : L'application de gestion des emails est utilisée pour envoyer des
notifications aux administrateurs (comme les changements de statut des comptes de
modérateurs, ou erreur d’accès) et des newsletters aux utilisateurs. De plus, cette
application est également utilisée pour l'envoi des emails de vérification à deux facteurs
pour renforcer la sécurité des comptes utilisateurs.
 Mesures de sécurité
o Limitation de l'accès à cette application uniquement aux administrateurs, qui ont le
droit de modifier le contenu des modèles d'e-mail pour différents types de
communication.
o Utilisation de protocoles sécurisés (comme SMTPS) pour l'envoi d'emails afin de
protéger les données en transit.

4.5. BASE DE DONNÉES

Dans l’objectif de garantir une protection complète de la base de données contre les menaces, tant
internes qu'externes. Nous avons recommandé les actions suivantes :
1. Authentification et contrôle d'accès : Mise en place d'un système d'authentification
robuste pour les utilisateurs autorisés à accéder à la base de données.
2. Chiffrement des données : Utilisation de techniques de chiffrement pour protéger les
données sensibles stockées dans la base de données, assurant ainsi leur confidentialité en
cas d'accès non autorisé.
3. Surveillance et journalisation : mise en place d’un processus de journalisation afin de
surveiller les actions des utilisateurs et repérer toute activité non autorisée ou suspecte. Les
journaux générés seront sauvegardés et consultés par l’administrateur, facilitant ainsi une
réaction rapide face aux incidents de sécurité.
4. Sauvegardes régulières : Planification de sauvegardes régulières des données de la base
de données pour prévenir la perte de données en cas d'incident de sécurité ou de défaillance
matérielle.

5. Conclusion

Dans ce chapitre, nous avons décrit en détail l'architecture complète du site, en mettant en
évidence chaque module et fonctionnalité. Nous avons accordé une attention particulière aux
mesures essentielles visant à garantir la sécurité du site. Cette phase d'analyse approfondie nous
permet désormais de passer à la prochaine étape : le développement. Le prochain chapitre se
concentrera sur cette phase cruciale du projet.

16
CHAPITRE 3 : IMPLEMENTATION

1. INTRODUCTION

Dans le présent chapitre, nous décrivons les étapes de l'implémentation de notre projet. Après
avoir défini la conception détaillée dans le chapitre précédent et établi une méthodologie claire,
ce chapitre présente en détail le processus de mise en œuvre. Nous justifierons les choix
technologiques effectués, les stratégies de développement adoptées et les défis critiques de
sécurité que nous avons relevés au cours des différentes phases du projet.

2. ENVIRONNEMENT DE TRAVAIL

Dans cette partie, nous présentons notre environnement de travail, en décrivant les langages de
programmation utilisés ainsi que les différentes bibliothèques.

2.1. MATERIEL UTILISE

 PC de développement : 2 pc Dell équipés d’un processeur I5 11ème génération, 16Go


de RAM et disque dur SSD de 255 Go chacun.

2.2. OUTILS ET TECHNOLOGIES DE DEVELOPPEMENT

2.2.1 LANGAGES DE PROGRAMMATION

 HTML5 : HTML ou HyperText Markup language, est un langage qui permet de décrire
et créer le contenu et les éléments des pages web [9].
 CSS3 : Cascading Style Sheets (Feuilles de Style en Cascade), est un langage utilisé pour
décrire l'apparence et la mise en forme d'un document écrit en HTML ou XML. [10]
 JavaScript : Le JavaScript (JS), est un langage de programmation orienté objet de hauts
niveaux qui est très utilisé dans le web [11].
 Python 3.12.2 : Python est un langage de programmation de haut niveau, très populaire et
largement utilisé par les professionnels de la cybersécurité et les développeurs en raison
de sa facilité d’utilisation et de son efficacité, souvent utilisé pour le développement web,
l'analyse de données et l'automatisation [12].

2.2.2 FRAMEWORK

 Django : Django est un Framework web Python de haut niveau qui facilite le
développement web rapide et le design propre, en permettant de se concentrer sur
l'application. Il est gratuit et open source [13].

17
2.2.3 BIBLIOTHEQUES

 Argon2 : Utilisé pour le chiffrement des données, offrant un algorithme de hachage


sécurisé [14].
 Django-simple-captcha : Fournit des CAPTCHA pour les formulaires Django, aidant à
prévenir le spam et les abus [15].
 Django-extensions : Ajoute des fonctionnalités supplémentaires et des outils pour le
développement avec Django [16].
 Pillow : Bibliothèque de traitement d'images pour Python, utilisée pour ouvrir, manipuler
et enregistrer différents formats d'images [17].
 Jquery : Une bibliothèque JavaScript rapide et concise qui simplifie la manipulation du
DOM, les événements et les effets [18].

2.2.4 BASE DE DONNÉES

 MySQL : Système de gestion de base de données relationnelle, utilisé dans notre cas pour
le stockage des données [19].

2.2.5 ENVIRONNEMENT DE DÉVELOPPEMENT

 Visual Studio Code : L'éditeur de code principal, populaire pour ses fonctionnalités
extensibles et son support pour de nombreux langages de programmation [20].
 Git : Système de contrôle de version utilisé pour la gestion des versions du code source,
permettant de suivre les modifications du code et de collaborer efficacement [21].
 Dépôt Git privé : Stockage sécurisé du code source pour la gestion de versions en privé.

3. ETAPES DE MISE EN ŒUVRE

Dans cette section, nous détaillerons minutieusement le processus de déploiement de notre


solution, et nous examinerons en détail les mesures de sécurité appropriées que nous avons mises
en place. L'Annexe C présente également des mesures de sécurité supplémentaires que nous avons
implémentées.

3.1. CONFIGURATION DE L’ENVIRONNEMENT DE DEVELOPPEMENT

La première étape consiste à configurer l'environnement de travail. Pour ce faire, nous avons
débuté par l'installation de Python, puis nous avons créé un environnement virtuel avec venv.
Ensuite, nous avons installé Django ainsi que toutes les dépendances requises à l'aide du fichier
requirements.txt. En parallèle, nous avons configuré Visual Studio Code comme notre principal
éditeur de code, en ajoutant les extensions Python, Django-Intellisense et Django-template pour
optimiser notre efficacité de développement.

MESURES DE SECURITE
 Utilisation de versions sécurisées et à jour des logiciels : S’assurer que toutes les
dépendances sont à jour et exemptes de vulnérabilités connues.

18
 Configuration des paramètres de sécurité dans l’environnement de développement :
Utilisation d’un fichier « .env » pour gérer les variables d’environnement sensibles.

3.2. DEVELOPPEMENT DE L’INTERFACE UTILISATEUR

Le développement de l'interface utilisateur a nécessité la création de pages HTML5, leur mise en


forme avec CSS3, ainsi que l'ajout d'interactivité via JavaScript. Nous avons accordé une attention
particulière à l'adaptabilité de l'interface à divers appareils, assurant ainsi une compatibilité avec
tous les formats d'écran. Pour accélérer le processus de développement et garantir une présentation
homogène, nous avons utilisé les bibliothèques jQuery et Bootstrap.

Il convient de noter que nous avons conçu l'interface de manière intégrale, sans recourir à
l'utilisation de modèles tiers. Cette approche a été adoptée pour garantir la sécurité de l'application,
en évitant d'introduire des vulnérabilités potentielles liées à l'utilisation de modèles tiers. En effet,
L'utilisation de modèles tiers peut offrir des avantages tels que des designs attractifs et
professionnels, et une mise en œuvre rapide. Cependant, cela peut également présenter des risques
potentiels en termes de sécurité, car ces derniers peuvent contenir des vulnérabilités de sécurité,
ou des dépendances sur des bibliothèques ou des composants qui peuvent ne pas être à jour ou
bien sécurisés.

MESURES DE SÉCURITÉ
 Validation et nettoyage des entrées utilisateur : dans le but d’éviter les attaques XSS on
a utilisé des bibliothèques de validation côté client, comme démontré dans le code suivant :
<script>
document.getElementById('emailForm').addEventListener('submit',
function(e) { const email = document.getElementById('email').value;
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
if (!emailPattern.test(email)) {
alert('Invalid email address!');
e.preventDefault();
}
});
</script>

# code de validation côté serveur


from django.core.validators import validate_email
email = request.POST.get('email')
try:
validate_email(email)
except ValidationError:
return HttpResponse("Email not valid")

 Utilisation de Content Security Policy (CSP) : La politique CSP vise à prévenir les
injections de script [22]. L’ajout de l’en-tête HTTP CSP permet aux administrateurs d'un
19
site web de contrôler les ressources que le navigateur du client peut charger sur une page
spécifique. Le code suivant illustre cette fonctionnalité. Des détails supplémentaires sont
disponibles dans l'annexe.
<! -- Inclusion d'une politique CSP -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self';
script-src 'self' 'nonce-xyz'; style-src 'self' 'nonce-xyz';">

 Jetons CSRF pour les formulaires sensibles : Le code suivant montre un jeton CSRF
qui assure la protection contre les attaques CSRF [23].
<! -- Template HTML -->
<form method="post">
{% csrf_token %}
<! -- autres champs de formulaire -->
</form>

3.3. DEVELOPPEMENT DE LA LOGIQUE SERVEUR

Lors de la configuration du projet Django, nous avons établi les modèles, les vues et les Template
essentiels pour gérer les données et les interactions utilisateur. Nous avons également instauré des
systèmes de gestion des utilisateurs et des sessions, garantissant ainsi une expérience utilisateur
sécurisée et personnalisée.
MESURES DE SECURITE
 Mise en place de jetons CSRF et configuration des cookies de Session et CSRF
comme « secure » et « HttpOnly » : La mesure de sécurité, présentée dans le code
suivant, vise à atteindre deux objectifs principaux :

o Protéger contre les attaques CSRF.


o Prévenir les scripts malveillants de lire les cookies de session.

# python: settings.py
CSRF_COOKIE_SECURE = True
CSRF_COOKIE_HTTPONLY = True
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_HTTPONLY = True

 Implémentation de JSON Web Tokens (JWT) pour la gestion des sessions :


Nous avons utilisé JWT pour sécuriser les sessions utilisateur [24]. Chaque jeton contient
les informations de session et est signé pour garantir son intégrité. Les utilisateurs incluent
leur JWT dans l'en-tête des requêtes HTTP pour accéder aux ressources protégées [25].

20
# settings.py (JWT configuration)
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication', ),
}

 Suivi des Sessions Utilisateurs Actives


Nous avons intégré une fonctionnalité pour suivre les sessions des utilisateurs, enregistrant le
nom d'utilisateur, l'ID, l'adresse IP et le navigateur dans la table `ActiveUsers` de la base de
données. Lors de la déconnexion, l'entrée est supprimée et enregistrée dans un fichier log. Un
utilisateur ne peut pas ouvrir plusieurs sessions simultanément.

user_ip = request.META.get('REMOTE_ADDR')
user_browser = request.META.get('HTTP_USER_AGENT')

 Vérification de la Complexité des Mots de Passe


Nous avons mis en place une vérification pour garantir que les mots de passe des utilisateurs sont
suffisamment complexes. Un mot de passe fort doit contenir au moins 12 caractères, incluant au
moins un chiffre, une lettre majuscule et une lettre minuscule.

import re
def validate_password_strength (self, password):
if len(password) < 12: # Vérifie si la longueur est d'au moins 12 caractères
return False
if not re.search(r'[A-Z]', password): # Vérifie la présence d'une lettre majuscule
return False
if not re.search(r'[a-z]', password): # Vérifie la présence d'une lettre minuscule
return False
if not re.search(r'\d', password): # Vérifie la présence d'un chiffre
return False
return True

 Restrictions après plusieurs tentatives d’ajout d’email pour la newsletter :


Consiste à empêcher les soumissions répétées, pour éviter les abus et garantir la
disponibilité des données, comme le montre le code suivant :
# views.py
def add_email_to_newsletter(request):
if request.session['email_spam_token'] >= 3:
if timezone.now() - token_init_time <= timedelta(minutes=3):
return HttpResponseForbidden("Maximum limit for
subscriptions reached. Try again later.")
# logiques d'ajout à la newsletter…

21
 Tracer les changements des modèles de base de données avec signals.py : Utiliser
les signaux de Django pour tracer et enregistrer les modifications [26] des modèles
dans un fichier de log, dont le code est présenté ci-dessous:

# signals.py
logger = logging.getLogger(__name__)

@receiver(post_save, sender=MyModel)
def log_model_update(sender, instance, **kwargs):
action = 'created' if kwargs.get('created', False) else 'updated'
logger.info(f'{sender.__name__} {action}: {instance}')
# action peut être 'Created' ou 'Modified' ca dépend au attribut is_edited

@receiver(post_delete, sender=MyModel)
def log_model_delete(sender, instance, **kwargs):
logger.info(f'{sender.__name__} deleted: {instance}')

 URL dynamiques et gestion des réponses HTTP avec Django dispatcher :


L'utilisation des vues génériques Django pour gérer les URL dynamiques et les réponses
HTTP [27] renforce la sécurité et la fiabilité des applications. Sa permet aussi d’éviter
les redirections non validées et assurer une restriction d’accès plus robuste aux URL.
Voici un aperçu du code python utilisé:

# views.py
from 22jango.http import HttpResponse, HttpResponseNotFound,
HttpResponseRedirect, HttpResponseForbidden

def dynamic_view(request, id):


try:
obj = Users.objects.get(pk=id)
return HttpResponse(f’Object: {obj}’)
except MyModel.DoesNotExist:
return HttpResponseNotFound(‘Object not found’)

if not request.user.has_perm(‘app.view_mymodel’):
return HttpResponseForbidden(‘You do not have permission to
view this object’)

return HttpResponseRedirect(‘/index/’)

 Masquer la version du Serveur dans les en-têtes http : Nous avons utilisé un
intermédiaire « SimpleMiddleware.py », pour masquer la version du serveur dans les en-
têtes http. Voici une portion du code du fichier « SimpleMiddleware.py » :

22
# simple_middleware.py
class ServerVersionHidingMiddlware :
def __init__(self, get_response) :
self.get_response = get_response

def __call__(self, request) :


response = self.get_response(request)
response.__setitem__(‘Server’, ‘Hidden’)
return response
[28]

3.4. INTEGRATION ET GESTION DE LA BASE DE DONNEES

Nous avons effectué la configuration de MySQL pour son intégration avec Django, ainsi que la
création et la migration des modèles de base de données. Ce processus a englobé la définition des
schémas de données et l'établissement des relations entre les différentes tables.
MESURES DE SECURITE
 1.Utilisation du django ORM : nous avons utilisé l'ORM (Object-Relational Mapping)
de Django pour interagir avec la base de données. Cela renforce la sécurité du système en
offrant une abstraction des requêtes SQL brutes, ce qui réduit considérablement les risques
d'injection SQL et simplifie la gestion des transactions [33].
 Contrôles d’accès stricts : Pour limiter les autorisations des utilisateurs de la base de
données, nous avons mis en place deux types d'utilisateurs :
o Un utilisateur Admin pour MySQL, bénéficiant de tous les privilèges, à l'aide de
la commande suivante:

CREATE USER ‘Admin’@‘localhost’ IDENTIFIED BY ‘VerySecureP4ssw0rd’;


GRANT ALL PRIVILEGES ON Wikayanet.* TO ‘Admin’@‘localhost’;

o Un utilisateur MySQL doté de privilèges restreints, dont la commande SQL est


présentée ci-dessous :

CREATE USER ‘django’@‘localhost’ IDENTIFIED BY ‘AnotherVerySecureP4ssw0rd’;


GRANT SELECT, INSERT, UPDATE ON Wikayanet.* TO ‘django’@‘localhost’;

 Utilisation d’un algorithme de hachage sécurisé pour les mots de passe : Nous avons
utilisé l'algorithme `argon2` [14] pour hacher les mots de passe, comme démontré dans le
code suivant :

23
# users.models
from argon2 import PasswordHasher
def hash_password(self, raw_password):
if raw_password:
if self.validate_password_strength(raw_password):
ph = PasswordHasher()
hashed_password = ph.hash(raw_password)
self.password = hashed_password
else:
return self.validate_password_strength(raw_password)

3.5. SECURITE ET GESTION DES AUTHENTIFICATIONS

Nous avons mis en place CAPTCHA sur les formulaires afin de contrecarrer les bots. De plus,
nous avons intégré l’authentification à deux facteurs (2FA) pour renforcer la sécurité des comptes
utilisateur. Des mesures de sécurité ont été ajoutées pour limiter l'accès après plusieurs tentatives
de connexion infructueuses, afin de prévenir les attaques par force brute. De même, des
restrictions ont été mises en place après plusieurs tentatives d'ajout d'adresse e-mail à la newsletter.
MESURES DE SECURITE
 CAPTCHA : Cette fonctionnalité vise à empêcher les scripts de soumission
automatique de formulaires, comme le montre le code suivant :

# forms.py from captcha.fields import CaptchaField

class SampleForm(forms.Form): captcha = CaptchaField() ```

 Authentification à deux facteurs (2FA) : L'authentification à deux facteurs ajoute une


couche de sécurité supplémentaire pour les utilisateurs. Un code OTP de 6 chiffres est
généré aléatoirement et stocké temporairement dans la table OTP de la base de données.
Ensuite, un email contenant l'OTP est envoyé à l'utilisateur via le serveur SMTP. Lorsque
l'utilisateur saisi le code de confirmation, celui-ci est comparé avec le code stocké dans la
base de données. L'OTP est supprimé après utilisation ou après 1 minute.
 Restrictions après plusieurs tentatives de connexion échouées : Le code présenté ci-
après démontre notre approche pour restreindre les tentatives de connexion, dans le but de
prévenir les attaques par force brute.

24
# middleware.py
from django.core.exceptions import SuspiciousOperation

class BruteForceProtectionMiddleware:
def process_request(self, request):
if request.path == '/login/' and
too_many_failed_attempts(request):
raise SuspiciousOperation("Too many failed login
attempts.")

 Fichiers de journalisation : Afin d'assurer un suivi de sécurité efficace, nous avons mis
en place des procédures pour générer des fichiers log. Ces fichiers enregistrent les activités
et événements liés au contenu du site, ainsi que toutes les actions et événements des
utilisateurs.

o Enregistrement des activités et des événements liés aux utilisateurs : La partie


du fichier log présentée ci-dessous provient du fichier user.log, utilisé pour
enregistrer les activités et événements liés aux utilisateurs de l'application. Il
permet de suivre les actions des utilisateurs, de détecter les comportements
suspects et de fournir une piste d'audit aux administrateurs.
2024-04-25 11:41:22,864 [INFO] [Admin.1: Admin] logged out.
2024-04-25 11:41:36,673 [INFO] [Moderator.2: Zakaria] Incorrect password attempt
2024-04-25 11:41:47,831 [INFO] [Moderator.2: Zakaria] Connected Successfully
2024-04-25 11:43:39,917 [INFO] [Moderator.2: Zakaria] Unauthorized attempt to access Admin
2024-04-25 12:11:50,304 [INFO] [Moderator.2: Zakaria] logged out.
2024-04-25 12:12:09,355 [INFO] [Admin.1: Admin] Incorrect password or username attempt
2024-04-25 12:12:16,287 [INFO] [Admin.1: Admin] Incorrect password or username attempt
2024-04-25 12:12:23,244 [INFO] [Admin.1: Admin] Connected Successfully
2024-04-25 12:13:23,967 [INFO] [Admin.1: Admin] updated [Moderator.4: mod_profile]
2024-04-25 12:13:42,530 [INFO] [Admin.1: Admin] updated [Moderator.6: RaidBaroud]
2024-04-25 12:13:58,967 [INFO] [Admin.1: Admin] logged out.
2024-04-25 12:14:23,244 [INFO] [Moderator.4: mod_profile] Connected Successfully
2024-04-25 12:14:51,134 [INFO] [Moderator.4: mod_profile] updated his profile successfully
2024-04-25 12:41:36,673 [INFO] [Moderator.4: mod_profile] Unauthorized attempt to access Admin
2024-04-28 18:10:11,937 [INFO] [Moderator.4: mod_profile] logged out.

o Enregistrement des activités et des événements liés au contenu : Le fichier


content.log, dont un extrait est présenté ci-dessus, sert à enregistrer les activités et
les événements liés au contenu du site web. Il permet de suivre les actions des
administrateurs et des modérateurs sur les articles, les actualités, les documents,
etc. Ce suivi contribue à maintenir l'intégrité du contenu et offre une piste d'audit.
2024-04-04 03:14:03,668 [INFO] [Article.3] Created by [Moderator.2: Zakaria]
2024-04-25 11:42:13,539 [INFO] [Alert.2] Created by [Moderator.2: Zakaria]
2024-04-25 11:55:23,467 [INFO] [Alert.2] Updated by [Moderator.2: Zakaria]
2024-04-25 11:55:48,188 [INFO] [Alert.2] Deleted by [Moderator.2: Zakaria]
2024-04-25 12:44:45,438 [INFO] [Guide.3] Created by [Moderator.4: mod_profile]
2024-04-25 12:48:48,058 [INFO] [Article.4] Created by [Moderator.4: mod_profile]
2024-04-25 13:02:15,237 [INFO] [Article.4] Updated by [Moderator.4: mod_profile]
2024-04-25 13:15:39,639 [INFO] [Article.4] Created by [Moderator.4: mod_profile]
2024-04-30 11:45:38,135 [INFO] [Article.1] Deleted by [Moderator.6: RaidBaroud]
2024-04-30 11:52:15,545 [INFO] [Guide.1] Deleted by [Moderator.6: RaidBaroud]
2024-04-30 11:55:35,743 [INFO] [ExpertWord.12] Created by [Moderator.6: RaidBaroud]

25
3.6. DEPLOIEMENT SUR LE SERVEUR DE LOCAL

Pour le développement en local, nous avons opté pour le serveur de développement intégré de
Django « runserver », et mis en place des certificats SSL [30] via OpenSSL[31] pour garantir la
sécurité des communications.
MESURES DE SECURITE
 Mise en place de certificats SSL générés par OpenSSL (les étapes de création du certificat
SSL en annexe F), pour sécuriser les échanges, comme illustré dans le code suivant :

# Lancement du serveur local de développement utilisant la certificat SSL


générée
python manage.py runserver_plus --cert-file django-cer.crt --key-file
django-cert.key

3.7. SAUVEGARDES ET MAINTENANCE

Nous avons planifié et effectué des sauvegardes périodiques des données pour éviter toute perte
en cas d'incident. En outre, nous avons veillé à maintenir la mise à jour et la maintenance continues
de l'application et de ses dépendances.
MESURES DE SECURITE
 Stockage sécurisé des sauvegardes.
 Application régulière des correctifs de sécurité et des mises à jour du système.
Ces actions sont illustrées dans le code suivant :

# Script de sauvegarde de la base de données


mysqldump -u Admin -p wikayanet > wikayanet_backup.sql

# Mises à jour du système


sudo apt-get update
sudo apt-get upgrade -y

4. CONCLUSION

Dans ce chapitre, nous avons exposé l'environnement de développement, comprenant à la fois le


matériel et le logiciel utilisés, ainsi que les langages, les bibliothèques et les outils employés pour
la mise en œuvre de notre site. Ensuite, nous avons décrit en détail les différentes phases de
développement, mettant en avant les mesures de sécurité que nous avons mises en place pour
garantir un niveau de sécurité optimal pour notre site.

26
CHAPITRE 4 : TESTS ET RESULTATS

1. INTRODUCTION

Dans ce chapitre, nous examinerons les diverses interfaces et fonctionnalités de notre site. Ensuite,
nous procéderons à des tests de performances à travers des audits, pour ensuite discuter des
résultats obtenus et les comparer à ceux de l'ancienne version. Enfin, une conclusion clôturera le
chapitre.

2. PRESENTATION GENERALE DU SITE WIKANET

Dans cette section, nous allons présenter les différentes interfaces du site développé, en détaillant
les fonctionnalités de chacune.

2.1. PAGE D'ACCUEIL

La fenêtre principale de Wikayanet, comme illustrée dans la figure 4.1, propose plusieurs
fonctionnalités pour explorer les différentes sections du site.

Figure 4. 1 : Interface d’accueil

27
Le tableau 4.1 expose les rubriques du menu principal du site, tel qu'illustré dans la figure 4.2.

Menu Description

Présente des tutoriels et des articles d'opinion portant sur divers sujets liés
Article
à la sécurité.

Affiche les dernières actualités sur les événements et les incidents liés à la
Actualités
sécurité.

Propose des documents pédagogiques, des outils et des meilleures


Guides et ressources
pratiques pour la sécurité numérique.

Affiche des alertes de sécurité avec des informations sur les incidents
Alertes
récents, et leurs niveaux de gravité.

Recherche Recherche conviviale pour trouver facilement du contenu pertinent.

Permet aux utilisateurs de s'abonner à une newsletter pour recevoir


NewsLetter régulièrement des mises à jour et des nouvelles sur la sécurité, la figure 4.3
présente le formulaire de l'abonnement au newsletter.
Tableau 4.1 : Les différentes section du site

Figure 4.2 : Menu principale du site

Figure 4.3 : Formulaire de l'abonnement au newsletter

28
2.2. INTERFACE DE CONNEXION

La figure 4.4 illustre l'interface de connexion, par le biais de laquelle nous assurons la sécurité des
connexions à l'aide d'un captcha. Celui-ci permet de valider les formulaires et de prévenir les
connexions automatisées. De plus, les utilisateurs ont la possibilité de récupérer leur mot de passe
perdu en utilisant un code OTP (One Time Password) envoyé par email afin de procéder à la
réinitialisation.

Figure 4.4 : Interface de connexion et réinitialisation du mot de passe

2.3. INTERFACE ADMINISTRATEUR

Pour faciliter la mise à jour des rubriques et la gestion des utilisateurs, nous avons créé des
interfaces administratives sécurisées, telles que présentées dans les figures 4.5 et 4.6. Ces
interfaces offrent les fonctionnalités suivantes :
1. Gérer son propre compte.
2. Mettre à jour les différentes rubriques du site.
3. Gérer les utilisateurs.
4. Gérer la liste des abonnés à la newsletter.
5. Journaliser les activités des utilisateurs.

Figure 4.5 : Interface administrateur (modification du compte)

29
Figure 4.6 : Interface administrateur (liste des utilisateurs

2.4. INTERFACE MODERATEUR POUR LES MISES A JOUR DU SITE

Afin de simplifier la gestion du contenu, nous avons élaboré une interface sécurisée destinée aux
modérateurs. Cette interface leur permet de :
1. Ajouter, modifier ou supprimer du contenu.
2. Consulter les différentes activités sur le site en utilisant les fichiers de journalisation
que nous avons créés.

La figure 4.7 présente un exemple de formulaire permettant au modérateur d'ajouter un nouvel


article à WikayaNet.

Figure 4.7 : Interface modérateur


30
3. TESTS ET VALIDATION

Pour évaluer notre conception, nous avons d'abord procédé à un processus d'audit des deux sites,
puis nous avons comparé les résultats. Parallèlement, nous avons mené une étude sur les
vulnérabilités du CMS Joomla utilisé pour le développement de l'ancienne version. Cette section
du mémoire présentera les résultats de nos évaluations et discutera les conclusions obtenues.

3.1. PROCESSUS D’AUDIT DE SÉCURITÉ DU SITE WIKAYANET

Dans le cadre de la rénovation du site Wikayanet, un accent particulier a été mis sur sa sécurité.
En tant que dernière étape de ce projet, une vérification et une validation de la sécurité du site ont
été effectuées. Pour ce faire, un audit des deux versions a été réalisé, suivi d'une comparaison des
résultats.

Voici le processus que nous avons suivi :

 Nous avons utilisé l’outil OWASP ZAP [32], un outil d'audit gratuit et bien établi en open
source, pour détecter les vulnérabilités de sécurité dans les applications web.

 Les étapes de l'audit comprenaient des scans de vulnérabilités automatisés, ainsi que des
scénarios d'analyse supplémentaires pour cibler les vulnérabilités spécifiques et valider les
résultats en éliminant les faux positifs.

 Enfin, un rapport d'audit a été rédigé pour résumer les résultats obtenus et mettre en
évidence les points forts et les faiblesses à améliorer. Les rapports d'audit complets des
deux sites sont inclus dans les annexes D et E.

3.2. ETUDE COMPARATIVE DES RESULTATS D’AUDIT

Les tableaux 4.2 et 4.3, présentés dans cette section, font partie des rapports d’audit. Ils illustrent
respectivement les vulnérabilités rencontrées dans les deux sites ainsi que leur niveau de criticité
(Les faux positifs ont été exclus de ces résultats).

Les résultats de l'audit révèlent principalement ce qui suit :


 La vulnérabilité "Hash Disclosure - Mac OSX salted SHA-1", initialement identifiée
comme critique dans l'ancienne version du site, est absente dans la nouvelle version.
 La vulnérabilité de la bibliothèque JavaScript vulnérable, qui présentait un risque élevé
dans l'ancienne version du site, n'a pas été trouvée dans la nouvelle version.
 La vulnérabilité "Absence of Anti-CSRF Tokens", précédemment identifiée avec une
criticité moyenne dans l'ancienne version, n'a pas été constatée dans la nouvelle version
du site.
 La vulnérabilité "User Controllable HTML Element Attribute (Potential XSS)", une faille
potentielle de XSS, a été corrigée dans la nouvelle version du site.
 Enfin, bien que la vulnérabilité "Cookie No HttpOnly Flag" ait été notée avec une faible
criticité, elle n'a pas été détectée dans notre version actuelle du site.

31
Tableau 4.2 : Résultats de test (Ancien version)

Tableau 4.3 : Résultats de test (Nouvelle version)

32
3.3. SYNTHESE

Après une analyse minutieuse des résultats de l'audit réalisé sur WikayaNet, nous avons observé
une amélioration notable de la sécurité par rapport à sa version antérieure. Cette amélioration est
le fruit des mesures de sécurité que nous avons préconisées et intégrées à chaque étape du
processus de développement.

Ces mesures comprenaient notamment l'identification et la correction des vulnérabilités, et la mise


en œuvre de bonnes pratiques de sécurité lors du développement. Grâce à cette approche nous
visons à garantir une protection optimale des données et des utilisateurs contre les menaces
potentielles telles que les attaques par injection SQL, les failles de sécurité XSS (cross-site
scripting) et les violations de l'accès non autorisé. En renforçant la sécurité de WikayaNet, nous
aspirons à instaurer un environnement en ligne sûr et fiable pour nos utilisateurs.

Cependant, conscient que la sécurité absolue est un objectif difficile à atteindre, nous avons
identifié quelques risques potentiels lors de l'audit. Nous avons exposé et discuté ces risques avec
l'équipe de Wikayanet, afin de déterminer les actions nécessaires pour renforcer davantage la
sécurité du site.

4. CONCLUSION

Dans ce chapitre nous avons présenté les interfaces et les fonctionnalités de WikayaNet, suivi de
tests de performance et d'audits de sécurité.
Les résultats ont mis en évidence des améliorations significatives en matière de sécurité par
rapport à la version antérieure, tout en mettant en avant l'importance de la progression continue
pour garantir la protection des utilisateurs et des données.

33
CONCLUSION GENERALE ET PERSPECTIVES

Dans le domaine de la cybersécurité, nous sommes fréquemment confrontés à des risques issus de
facteurs échappant à notre contrôle. C'est dans cette optique que nous avons entrepris la
conception d'un site informatif visant à fournir une vision actualisée de la cybersécurité. Notre
objectif est de renforcer la sécurité en tenant informée la population des dernières actualités et des
meilleures pratiques en matière de cybersécurité.

Pendant notre stage, nous avons suivi plusieurs étapes pour atteindre notre objectif. Nous avons
développé une solution basée principalement sur l'utilisation de techniques de cryptage, de
mécanismes d'authentification robustes et de bonnes pratiques de codage sécurisé, etc.

Notre solution vise à établir un environnement en ligne sûr et fiable, permettant aux utilisateurs
d'explorer en toute sécurité les concepts de sécurité, d'accéder aux actualités, et aux ressources.

En perspective, il serait intéressant d’apporter des améliorations aux performances de notre


système comme l'optimisation des temps de réponse et l'intégration de l'intelligence artificielle
pour détecter et prévenir les menaces de manière proactive. De plus, nous envisageons d'ajouter
des fonctionnalités interactives telles que des forums de discussion et des webinaires pour
favoriser l'échange de connaissances entre les utilisateurs.

L'extension des capacités de notre système pour inclure des analyses de vulnérabilités
automatisées et des audits de sécurité réguliers renforcerait encore davantage la fiabilité de notre
plateforme. Finalement, nous prévoyons d'élargir notre base de contenu avec des tutoriels détaillés
et des études de cas pratiques pour offrir aux utilisateurs des ressources complètes et éducatives
sur la cybersécurité.

En somme, notre projet est conçu pour évoluer continuellement afin de répondre aux défis
croissants de la cybersécurité, assurant ainsi un support constant et pertinent à nos utilisateurs.

34
BIBLIOGRAPHIE

[1]. EDGE Academy. "What is a Web Application.", 15 août 2022.


(lien:https://www.stackpath.com/edge-academy/what-is-a-web-application/).

[2]. Auger, Robert. "The WASC Threat Classification.", 18 décembre 2009.


(lien:http://projects.webappsec.org/w/page/13246978/Threat%20Classification).

[3]. HARRY, Guillaume. "Principales failles de sécurité des applications Web.", hal-00736013, 2019.

[4]. Bar-Gad, Izhar, Amit Klein, Sanctum Inc. "Developing Secure Web Applications.", Sanctum, juin
2002.

[5]. open source matters. "Joomla CMS.’’, (lien:https://www.joomla.org/about-joomla.html).

[6]. Chandran, Aswin. "Joomla Security: Insights & RCE.", 22 août 2023.
(lien:https://medium.com/@aswinchandran274/joomla-security-insights-rce-f521b762acba).

[7]. Object Management Group. "Unified Modeling Language.", (lien:https://www.uml.org/).

[8]. Turpin, Keith, Jon Gadsden. "OWASP Secure Coding Practices Quick Reference Guide.", The Open
Web Application Security Project, novembre 2010.

[9]. Duckett, Jon. "HTML & CSS Design and Build Websites.", John Wiley & Sons, Indianapolis, Indiana,
États-Unis, 2011.

[10]. Duckett, Jon. "HTML & CSS Design and Build Websites.", 2011, p. 226.

[11]. pluralsight. "JavaScript.", (lien:https://www.javascript.com/about).

[12]. Python Software Foundation. "Python.", (lien:https://www.python.org/about/).

[13]. Django Software Foundation and individual contributors. "Django."


,(lien:https://www.djangoproject.com/foundation/).

[14]. P-H-C. "phc-winner-argon2.", 02 juillet 2019. (lien:https://github.com/P-H-C/phc-winner-argon2).

[15]. Bonetti, Marco. "django-simple-captcha.", (lien:https://django-simple-


captcha.readthedocs.io/en/latest/).

[16]. Trier, Michael, Bas van Oostveen. "django-extensions." ,2015. (lien:https://django-


extensions.readthedocs.io/).

[17]. Lundh, Fredrik. "Pillow.", (lien:https://pillow.readthedocs.io/).

[18]. OpenJS Foundation. "jQuery.", (lien:https://jquery.com/).

[19]. Oracle. "MySQL.", (lien:https://www.mysql.com/about).

[20]. Microsoft. "Visual Studio Code.", (lien:https://code.visualstudio.com/docs).

[21]. Software Freedom Conservancy. "Git.", (lien:https://git-scm.com/).

[22]. Medley, Joe. "Content Security Policy.", 18 avril 2022. (lien:https://web.dev/articles/csp).


35
[23]. Geeksforgeeks, (lien:https://www.geeksforgeeks.org/csrf-token-in-django/).

[24]. Sanders, David. "simple JWT.", (lien:https://django-rest-framework-


simplejwt.readthedocs.io/en/latest/).

[25]. Auth0 by Okta. "JSON Web Tokens." ,(lien:https://jwt.io/).

[26]. Django Documentation officielle. (lien:https://docs.djangoproject.com/en/5.0/topics/signals/).

[27]. Django Documentation officielle. (lien:https://docs.djangoproject.com/en/5.0/topics/http/urls/).

[28]. Seclearner, Stack Overflow. "Delete 'Server' Response Header in Django Framework.", 21 avril
2020. (lien:https://stackoverflow.com/questions/61344326/delete-server-response-header-in-django-
framework-v3-0-5).

[29]. Bonetti, Marco. "django-simple-captcha Usage.", (lien:https://django-simple-


captcha.readthedocs.io/en/latest/usage.html).

[30]. AO Kaspersky Lab. "Qu'est-ce qu'un Certificat SSL." , (lien:https://www.kaspersky.fr/resource-


center/definitions/what-is-a-ssl-certificate).

[31]. OpenSSL. (lien:https://www.openssl.org/).

[32]. OWASP ZAP Dev Team. "Zed Attack Proxy.", (lien:https://www.zaproxy.org/getting-started/).

[33]. Django Documentation officielle. (lien:https://docs.djangoproject.com/en/5.0/topics/db/queries/).

36
ANNEXE A
SITE MAP DU SITE WIKAYANET

La figure 5.1 présente le site map, une représentation visuelle de la structure du site. Elle illustre
les différentes pages et sections, ainsi que leurs interconnexions, offrant une vue d'ensemble claire
de la navigation et de l'organisation du contenu du site.

Figure. 1 : Site map de Wikayanet

37
ANNEXE B
FICHIER REQUIREMENTS.TXT

La figure 5.2 expose le fichier requirements.txt, généré à l'aide de la commande `pip freeze >
requirement.txt`, répertoriant toutes les dépendances et bibliothèques Python nécessaires pour
faire fonctionner l'application. Ce fichier revêt une importance capitale pour assurer que tous les
environnements de développement et de production disposent des mêmes configurations de
dépendances.

Figure. 2 : contenu du fichier requirment.txt

38
ANNEXE C
MESURES DE SECURITE

1- EN-TETE HTTP
Nous analysons l'en-tête HTTP des requêtes envoyées au serveur, telles qu'illustrées dans la figure
5.3. nous observons que le champ "Server" affiche "Hidden" au lieu du nom et de la version du
serveur. Cette mesure de sécurité a été instaurée pour masquer les informations sensibles relatives
au serveur, réduisant ainsi le risque d'attaques exploitant des vulnérabilités spécifiques à certaines
versions de serveurs.

Figure. 3 : En tête HTTP

2- CONFIGURATION DU CSP AU NIVEAU DU DJANGO

Pour configurer la Content Security Policy (CSP), nous avons Ajouté un Middleware
ContentSecurityPolicyMiddleware:
# middleware.py
class ContentSecurityPolicyMiddleware:
def __init__(self, get_response):
self.get_response = get_response

def __call__(self, request):


response = self.get_response(request)
nonce = ''.join(random.choices(string.ascii_letters + string.digits, k=16))
response['Content-Security-Policy'] = (
f"default-src 'self'; "
f"script-src 'self' https://cdn.jsdelivr.net 'nonce-{nonce}'; "
f"style-src 'self' 'nonce-{nonce}'; "
)
return response

Dans ce cas, nous avons autorisé que les scripts provenant de la source `https://cdn.jsdelivr.net`,
ainsi que les scripts et styles internes qui possèdent l'attribut `nonce` avec la valeur `nonce`,
générée aléatoirement.
La figure 5.4 présente une capture de la console DevTool de Chrome. Le rapport montre qu'un
script interne qui ne possède par l’attribue nonce été bloqué par la politique de sécurité du contenu
39
(CSP), ainsi que les stylesheet externes, car ils ne sont pas inclus dans la liste des autorisation.
Cela illustre l'efficacité de notre configuration CSP pour empêcher l'exécution de scripts non
approuvés, renforçant ainsi la sécurité du site contre les attaques de type cross-site scripting (XSS).

Figure. 4 : Devtool qui illustre le refus d’un script non autorisées

3- CONFIGURATION DES COOKIES

La figure 5.5 illustrant la configuration des cookies dans les DevTools de Chrome. La figure
montre que les cookies `csrftoken` et `sessionid` sont configurés avec les attributs `HttpOnly` et
`Secure`. Cela garantit que ces cookies ne peuvent pas être accédés par le client-side JavaScript
et sont uniquement transmis via des connexions HTTPS, renforçant ainsi la sécurité de
l'application.

Figure. 5 : Configuration des cookies dans DevTools de Chrome.

40
4- COMMANDES ET RÉSULTATS DE OpenSSL
Pour utiliser OpenSSL et vérifier les résultats des différentes commandes, nous avons suivi des
commandes couramment utilisées. Ci-dessous, nous présentons les principales commandes,
accompagnées de leurs descriptions et des types de résultats attendus.
 Génération d'une Clé Privée et Création d'une Demande de Signature de
Certificat : Pour configurer OpenSSL, il faut générer un certificat et une clé privée en
utilisant la commande suivante :
Openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./django-selfsigned.key
-out ./django-selfsigned.crt /E = wikayanet@gmail.com /S = Algiers /O=Cerist /C=DZ
/CN = Wikayanet

Figure. 6 : Création du certificat

 Conversion du Certificat SSL au Format PEM : Nous avons converti le certificat


SSL au format PEM, un standard pour les fichiers de certificats SSL, afin de le rendre
compatible avec divers serveurs et applications.
openssl x509 -outform pem -in django-selfsigned.crt -out django-selfsigned.pem

 Affichage du Certificat : Nous avons affiché le contenu du certificat pour vérifier les
informations qu'il contient, telles que le sujet, l'émetteur et la période de validité.

openssl x509 -in django-selfsigned.pem -text -noout

Cette commande lit le certificat server.pem et affiche son contenu sous une forme lisible. Les
détails affichés incluent les informations sur l'émetteur, le sujet, les dates de début et de fin de
validité, et la clé publique.

41
Figure. 7 : Affichage du certificat

Parmi les informations affichées :


Certificate:
Data:
Version: 3 (0x2)
Serial Number:
5e:54:e8:0b:4c:04:04:62:48:ed:ad:f0:3a:49:07:a4:57:39:fb:a0
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=dz, ST=Algiers, L=Bab Ezzouar, O=Cerist, OU=dep Security,
CN=Wikayanet, emailAddress=wikayanet@gmail.com
Validity
Not Before: May 20 00:52:46 2024 GMT
Not After : May 20 00:52:46 2025 GMT
Subject: C=dz, ST=Algiers, L=Bab Ezzouar, O=Cerist, OU=dep Security,
CN=Wikayanet, emailAddress=wikayanet@gmail.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:b4:5a:0f:ff:16:50:78:a1:a7:e5:1f:14:cf:44:
. . . . . . . . . . .
8f:1c:05:01:ea:43:cb:75:54:ac:df:7f:c2:cc:40:47:f5
Exponent: 65537 (0x10001)

Signature Algorithm: sha256WithRSAEncryption


Signature Value:
52:68:7e:06:25:61:7a:31:1c:95:5c:b4:fd:24:0c:12:9f:15:
. . . . . . . . . . .
d1:4b:61:4c:40:1a:01:77:17:8c:13:d1:09:31:64:cc:5b:0c

42
ANNEXE D
RAPPORT ZAP DE L'ANCIEN SITE WIKAYANET

La figure 5.6 contient le rapport ZAP pour l'ancien site, révélant plusieurs vulnérabilités et risques
de sécurité. Le rapport détaille chaque faille, son niveau de risque et ses implications potentielles.

Figure. 8 : ZAP Rapport (ancien site)

43
ANNEXE E
RAPPORT ZAP DU NOUVEAU SITE

La figure 5.6 inclut le rapport ZAP pour le nouveau site, démontrant les améliorations de sécurité
effectuées. Les vulnérabilités identifiées dans le premier rapport ont été corrigées, et le nouveau
rapport confirme que le site est désormais protégé contre ces failles.

Figure. 9 : ZAP Rapport (nouveau site)

44

Vous aimerez peut-être aussi