Mémoire de Licence: Département
Mémoire de Licence: Département
Mémoire de Licence: Département
Faculté d’Informatique
Département ………
Mémoire de Licence
Filière: Informatique
Spécialité:
Soutenu le : ../../….
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.
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.
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
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
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].
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
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.
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.
3
3. SÉCURITÉ DES APPLICATIONS WEB
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.
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.
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
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.
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
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
5.3. MENACES
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
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.
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é.
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.
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.
Dans cette phase de la conception, nous examinerons les exigences spécifiques du site, à la fois
fonctionnelles et techniques.
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.
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.
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.
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
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é.
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é.
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.
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.
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.
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.
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
MySQL : Système de gestion de base de données relationnelle, utilisé dans notre cas pour
le stockage des données [19].
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é.
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.
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>
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>
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 :
# python: settings.py
CSRF_COOKIE_SECURE = True
CSRF_COOKIE_HTTPONLY = True
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_HTTPONLY = True
20
# settings.py (JWT configuration)
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication', ),
}
user_ip = request.META.get('REMOTE_ADDR')
user_browser = request.META.get('HTTP_USER_AGENT')
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
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}')
# views.py
from 22jango.http import HttpResponse, HttpResponseNotFound,
HttpResponseRedirect, HttpResponseForbidden
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
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:
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)
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 :
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.
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 :
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 :
4. CONCLUSION
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.
Dans cette section, nous allons présenter les différentes interfaces du site développé, en détaillant
les fonctionnalités de chacune.
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.
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é.
Affiche des alertes de sécurité avec des informations sur les incidents
Alertes
récents, et leurs niveaux de gravité.
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.
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.
29
Figure 4.6 : Interface administrateur (liste des utilisateurs
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.
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.
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.
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.
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).
31
Tableau 4.2 : Résultats de test (Ancien 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.
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.
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
[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.
[6]. Chandran, Aswin. "Joomla Security: Insights & RCE.", 22 août 2023.
(lien:https://medium.com/@aswinchandran274/joomla-security-insights-rce-f521b762acba).
[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.
[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).
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.
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.
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.
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
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).
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.
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
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é.
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
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.
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.
44