IMG> Ou Autre Tel Que Présenté Au Fragment 6.1
Total Page:16
File Type:pdf, Size:1020Kb
Abstraction de l'autorisation/authentification du code applicatif d'un système web par Jean-Luc Cyr Mémoire présenté à l’Université du Québec à Chicoutimi en vue de l’obtention du grade de Maître ès sciences appliquées (M.Sc.A.) Québec, Canada © Jean-Luc Cyr, 2019 RÉSUMÉ L’implémentation de mesures de sécurité lors du développement d’une application Web comporte des lacunes. En effet, ces fonctions, lorsqu’elles existent, sont souvent développées à chaque nouveau projet avec une approche manquant de structure et de rigueur. Cela induit une forte probabilité d’erreurs. Le point de départ du présent travail a ainsi été de trouver une réponse à la question suivante : « Est-il possible d’extraire les mécanismes d’autorisation et d’authentification du code applicatif d’un système Web? ». Si oui, est-il possible de développer un composant gérant la sécurité qui serait réutilisable et dont le fonctionnement pourrait être validé par des experts dans le domaine ? La prépondérance de l’utilisation du serveur Apache pour livrer le contenu des applications Web sur le marché a orienté la mise en œuvre d’une solution à ce problème. Il a été établi que développer et rendre disponible un module complémentaire pouvant gérer l’authentification d’un utilisateur et ses autorisations pour accéder à différentes ressources applicatives était réalisable. Une documentation pertinente pour sa mise en place à l’intérieur d’un projet de développement applicatif a été rédigée. Dans un premier temps, comme présenté dans tous les gabarits de gestion de la sécurité informationnelle, il a fallu identifier et classifier les différentes ressources contenues dans les logiciels. Dans un second temps, il a fallu définir les utilisateurs qui interagissent avec ces ressources et les permissions associées aux relations entre les utilisateurs et les ressources. Plusieurs méthodologies sont proposées pour définir ces relations. Sur ces bases, un modèle a été défini et appliqué pour conserver l’identification des ressources, des utilisateurs et les relations entre les deux. Ces informations ont servi de base pour développer un module gérant l’accès aux systèmes et la protection des ressources. La gestion de ces informations a été documentée et déléguée aux concepteurs d’application ce qui permettra d’avoir un couplage fort entre l’application, son domaine et la gestion des accès. L’application du modèle, assurée par le module développé, doit être réalisée par des spécialistes en sécurité. TABLE DES MATIÈRES RÉSUMÉ ............................................................................................................................................. ii TABLE DES MATIÈRES .................................................................................................................... iii LISTE DES TABLEAUX .................................................................................................................... vii LISTE DES FIGURES ....................................................................................................................... viii LISTE DES FRAGMENTS DE CODES SOURCES .......................................................................... ix LISTE DES ACRONYMES ET SIGLES .............................................................................................. x REMERCIEMENTS .......................................................................................................................... xiii AVANT-PROPOS ............................................................................................................................ xiv Introduction ............................................................................................................... 1 1.1 Présentation de la problématique ..................................................................................... 2 1.1.1 Failles de sécurité dans les médias ............................................................................... 2 1.1.2 Applications Web .......................................................................................................... 3 1.1.3 Développement de produits ......................................................................................... 3 1.1.4 Systèmes utilisés ........................................................................................................... 4 1.1.5 Constatations de l’OWASP ............................................................................................ 4 1.1.6 Systèmes existants ........................................................................................................ 5 1.2 Objectifs du projet ............................................................................................................. 6 1.3 Méthodologie .................................................................................................................... 7 1.4 Échéancier ......................................................................................................................... 8 1.5 Contribution ...................................................................................................................... 8 État de l’art ................................................................................................................ 9 2.1 Systèmes utilisés sur le marché ....................................................................................... 10 2.1.1 Les serveurs HTTP ....................................................................................................... 10 2.1.2 Les langages de programmation ................................................................................. 12 2.1.3 Les gestionnaires de contenu ...................................................................................... 13 2.1.4 Les systèmes d’exploitation ........................................................................................ 15 2.2 Les standards en sécurité informatique .......................................................................... 15 2.3 Les systèmes Web ........................................................................................................... 17 2.3.1 Fonctionnement global ............................................................................................... 17 2.3.2 Le serveur Apache HTTP .............................................................................................. 19 2.3.3 Le protocole HTTP(S) ................................................................................................... 21 2.4 Gestion de l’authentification ........................................................................................... 24 2.4.1 Système d’exploitation Unix ....................................................................................... 25 2.4.2 Système d’exploitation Windows ................................................................................ 26 2.4.3 Applications natives .................................................................................................... 27 2.4.4 Applications mobiles ................................................................................................... 27 2.4.5 Applications Web ........................................................................................................ 27 2.5 La gestion des autorisations ............................................................................................ 28 2.5.1 Système d’exploitation Unix ....................................................................................... 29 2.5.2 Système d’exploitation Windows ................................................................................ 31 2.5.3 Applications natives .................................................................................................... 31 2.5.4 Applications mobiles ................................................................................................... 31 2.5.5 Applications Web ........................................................................................................ 32 Pistes de solution .................................................................................................... 37 3.1 Hypothèses ...................................................................................................................... 37 3.2 Véhicule pour l’implémentation ...................................................................................... 38 3.3 Possibilités d’authentification ......................................................................................... 38 3.3.1 Basées sur le système d’exploitation .......................................................................... 39 3.3.2 Basées sur les applications existantes ......................................................................... 39 3.3.3 Interactions client-serveur .......................................................................................... 39 3.4 Possibilités d’autorisation ............................................................................................... 40 3.4.1 Basées sur le système d’exploitation .......................................................................... 40 3.4.2 Basées sur les applications existantes ......................................................................... 41 3.4.3 Interactions client-serveur .......................................................................................... 41 3.5 Solution proposée ..........................................................................................................