Sécurité Des Applications Web (2702)
Sécurité Des Applications Web (2702)
Sécurité Des Applications Web (2702)
D’après des enquêtes récentes, trois sites Web sur quatre sont
vulnérables aux agressions, et la vaste majorité de ces offensives
vise la sécurité des applications.
Les entreprises font confiance à la sécurité du réseau et de l’hôte,
mais souvent, ces mesures ne suffisent pas pour empêcher ces
attaques contre les applications Web.
La sécurité des applications diffère de celle du réseau et du système
hôte. Les approches traditionnelles d’implémentation de la sécurité
du réseau et de l’hôte ne conviennent pas à ce niveau.
La sécurité applicative
Les obligations en matière de sécurité des applications, pour peu qu’elles aient été
définies, sont souvent perçues comme impossibles à mettre en pratique, elles sont
dotées d’une connotation négative (interdictions), ou encore elles s’avèrent trop floues.
Le test de la sécurité des applications est effectué uniquement en cas d’audit.
Les équipes chargées de la conception et de la définition des exigences des
applications considèrent que la sécurité concerne l’équipe réseau ou informatique.
Les procédures de test standard concernent principalement le comportement
fonctionnel.
Seuls les quelques rares « spécialistes de la sécurité » de l’entreprise sont conscients
des menaces pesant sur la sécurité des applications.
Le test de la sécurité des applications se limite à de courts créneaux au cours desquels
des pirates dits éthiques tentent de simuler ce que feraient les vrais pirates.
USURPATION D’IDENTITÉ
Exemples :
L’agresseur entre les informations d’authentification d’un autre utilisateur.
L’agresseur modifie le contenu d’un cookie ou d’un paramètre afin de se faire passer
pour un autre utilisateur ou de faire croire que le cookie provient d’un autre serveur.
Erreurs courantes :
Utilisation d’une authentification basée sur les communications pour autoriser l’accès
aux données d’un utilisateur.
Utilisation d’informations d’authentification non chiffrées qui peuvent être interceptées
et réutilisées par un espion.
Stockage d’informations d’authentification dans des cookies ou des paramètres.
Utilisation de méthodes d’authentification « bricolées maison » ou non testées.
Le logiciel client n’est pas autorisé à authentifier l’hôte lorsque cela est nécessaire.
Utilisation d’une authentification provenant d’un domaine sécurisé erroné.
FALSIFICATION
Exemples :
Défiguration d’un site Web.
Modification des données pendant leur transit.
Erreurs courantes :
Autorisation accordée à des sources de données sans validation préalable.
Assainissement des données en entrée afin d’empêcher l’exécution de
code indésirable.
Droits d’exécution accordés à des comptes dont les privilèges ont été
augmentés.
Absence de chiffrement des données sensibles.
RÉPUDIATION
Exemples :
Suppression de journaux.
Usurpation d’identités pour faire une demande de modifications.
Erreurs courantes :
Processus d’autorisation et d’authentification insuffisant, voire inexistant.
Journalisation inadaptée.
Autorisation de présence d’informations sensibles sur des canaux de
communications non sécurisés.
DIVULGATION D’INFORMATIONS
Exemples :
Vol de mots de passe.
Obtention d’informations de carte de crédit ou d’autres informations
personnelles identifiables (PII) similaires.
Obtention d’informations sur le code source de l’application et/ou de ses
systèmes hôte.
Erreurs courantes :
Possibilité pour un utilisateur authentifié d’accéder aux données d’autres
utilisateurs.
Autorisation de présence d’informations sensibles sur des canaux de
communications non sécurisés.
Choix inadapté des algorithmes et des clefs de chiffrement.
DÉNI DE SERVICE (DOS)
Exemples :
Envoi d’un trop grand nombre de requêtes simultanées à l’application.
Envoi de requêtes qui provoquent le redémarrage de l’application ou des
temps de réponse très longs.
Erreurs courantes :
Placement d’un trop grand nombre d’applications ou d’applications
conflictuelles sur un seul serveur.
Test d’unités incomplet.
ELÉVATION DES PRIVILÈGES
Exemples :
Un utilisateur se voit affecter des droits d’administration.
Un employé accède à un rôle de manager.
Erreurs courantes :
Exécution de processus du serveur Web avec les droits « root »
ou « administrateur ».
Erreurs de codage permettant des dépassements de la mémoire tampon,
plaçant l’application dans un état de déboguage élevé.
Erreurs au stade de la conception
Partie applicative
Intègre la logique métier
Ex : un document est composé de sections, elles mêmes composées de
sous-sections...
Services offerts aux utilisateurs
Ex : créer un document, le modifier, ajouter des sections, l'enregistrer...
Trois parties
Les tiers sont / peuvent être exécutés sur des machines différentes
Certains tiers peuvent être sous-découpés
De nombreuses variantes de placement des tiers et de leur distribution
Modèle centralisé
Couche de persistance
Stockage et manipulation des données de l'application
Supports physiques variés
Fichiers binaires
Fichiers textes « de base » ou structurés (JSON)
Fichiers XML
Une base de données relationnelle ou un ensemble de bases de données
relationnelles
Pour ce dernier cas
Nécessité d'envoyer à distance des requêtes de type SQL et d'en récupérer les
résultats
Pour réaliser cela
Soit c'est natif dans le langage utilisé (ex : PHP)
Soit on passe par des frameworks ou des API dédiés
Persistance
HTTP est un protocole client-serveur, les requêtes sont envoyées par une
entité : l’agent utilisateur (ou le proxy qui agit a son nom). La majorité du
temps l’agent utilisateur est un navigateur WEB, mais cela pourrait bien
être aussi un robot indexeur (notamment celui de google) ou pour un
autre moteur de recherche
Pour afficher une page WEB le navigateur envoie une requête pour
récupérer le document HTML de base (index.html). Il analyse ensuite
le fichier et récupère les requêtes additionnels correspondant aux
scripts, aux informations de mise en page (CSS) et les sous contenus
(image et vidéo). Le navigateur assemble le tout afin de construire la
page qui va être affichée par la suite.
HTTP persistent connection
www.example.com/register.php?firstname=peter&name=miller&age=55&gender=male
GET & POST
POST est la méthode utilisée pour transmettre des données en vue d’un
traitement à une ressource (formulaire HTML en général). L’URI fournit
est l’URI d’une ressource à laquelle s’appliqueront les données envoyées
au préalable par la requête POST. Le résultat peut varier, de la création
d’une ressource a la modification d’une autre existante.
PUT a une différence avec la méthode POST (vu auparavant) qui est
qu’elle est idempotente. Si elle est envoyée une seule fois ou plusieurs
fois le résultat sera toujours le même (si elle est envoyée avec succès). Si
on fait plusieurs fois la même requête le résultat elles peuvent avoir des
effets additionnels.
DELETE
Injection :
Les injections SQL sont les techniques de piratage Web les plus courantes.
Une attaque par injection SQL consiste en l’insertion de code malveillant
via l’entrée de requête SQL du client vers l’application.
Si elle n’est pas traitée correctement, une telle injection de code peut avoir
un impact sérieux sur l’intégrité et la sécurité des données.
Des injections SQL peuvent avoir lieu lorsque des données non filtrées du
client (un champ de recherche par exemple), pénètrent dans l’interpréteur
SQL de l’application elle-même.
Un exploit d’injection SQL réussi peut ainsi :
Lire et modifier des données sensibles de la base de données.
Exécuter des opérations d’administration sur la base de données :
Audit d’arrêt ou SGBD
Tronquer les tables et les journaux
Ajouter des utilisateurs
Récupérer le contenu d’un fichier présent sur le système de fichiers SGBD.
Émettre des commandes au système d’exploitation.
Les attaques par injection SQL permettent aux attaquants :
L’usurpation d’identité
La falsification des données existantes
De créer des problèmes de répudiation tels que l’annulation de
transactions
De permettre la divulgation de toutes les données sur le système
De détruire les données ou de les rendre indisponibles
De devenir administrateur du serveur de base de données
La gravité des attaques par injection SQL est limitée par :
Les compétences et l’imagination de l’attaquant
Le système de défense (contre-mesures) :
La validation des entrées
L’intégralité des privilèges
Toutes les bases de données ne prennent pas en charge le chainage
de commande :
Microsoft Access
Connecteur MySQL / J et C
Oracle
Les injections SQL les plus courantes sont :
en PHP
ASP classique
Cold Fusion
Certains langages anciens
Toutes les bases de données ne sont pas égales (SQL Server)
Shell de commande : master.dbo.xp_cmdshell ‘cmd.exe dir c ;’
Commandes de registre : xp_regread, xp_regdeletekey,
Compromettre la confidentialité avec l’injection de string SQL :
Si un système est vulnérable aux injections SQL, certains aspects de la triade
CIA (Confidentiality, Integrity, Availability - Confidentialité, intégrité,
disponibilité) peuvent être facilement compromis.
Qu’est ce que l’injection String SQL ?
Si des requêtes sont créées dynamiquement dans l’application en y
concaténant des chaînes, cela la rend très sensible à l’injection de String
SQL.
Si l’entrée prend une chaîne qui est insérée dans une requête en tant que
paramètre de chaîne, vous pouvez facilement manipuler la requête de
génération à l’aide de guillemets pour former la chaîne selon vos besoins
spécifiques.
Qu’est-ce que le chaînage de requête SQL ?
Lors du chaînage de requêtes, vous essayez d’ajouter une ou plusieurs
requêtes à la fin de la requête réelle.
Vous pouvez le faire en utilisant le ; métacaractère qui marque la fin
d’une requête et permet ainsi d’en démarrer une autre juste après dans
la même ligne.
Compromis de disponibilité :
Il existe de nombreuses façons différentes de violer la disponibilité.
Si un compte est supprimé ou si le mot de passe est modifié, le propriétaire
actuel ne peut plus y accéder.
Les attaquants pourraient également essayer de supprimer des parties de
la base de données, la rendant inutile ou même en supprimant toute la
base de données.
Une autre façon de compromettre la disponibilité serait de révoquer les
droits d’accès des administrateurs ou de tout autre utilisateur, afin que
personne n’ait accès à tout ou partie de la base de données.
Broken Authentication
Contournement d’authentification :
Entrées masquées :
La forme la plus simple est une dépendance à une entrée cachée qui se
trouve dans la page Web / DOM.
Suppression de paramètres :
Si un attaquant ne connaît pas la valeur correcte d’un paramètre, il peut
supprimer complètement le paramètre de la soumission pour voir ce qu’il se
passe.
Navigation forcée :
Si une zone d’un site n’est pas correctement protégée par la configuration,
cette zone du site est accessible par forçage brut.
Jetons JWT
Signature JWT :
Chaque jeton JWT doit au moins être signé avant de l’envoyer à un client.
Si un jeton n’est pas signé, l’application cliente pourra modifier le contenu
du jeton.
Vous utilisez la fonction « HMAC avec fonction SHA-2 » ou « signature
numérique avec RSASSA-PKCS1-v1_5 / ECDSA / RSASSA-PSS » pour signer
le jeton.
Fissuration JWT :
Avec le HMAC avec les fonctions SHA-2, vous utilisez une clé secrète pour
signer et vérifier le jeton.
Une fois que nous avons compromis cette clé, nous pouvons créer un
nouveau jeton et le signer. Il est donc très important que la clé soit
suffisamment puissante pour qu’une attaque par brute force ou par
dictionnaire hors ligne.
Jetons JWT
Types de jetons :
En général, il existe deux types de jetons :
le jeton d’accès
le jeton d’actualisation.
Le jeton d’accès est utilisé pour effectuer des appels d’API vers le serveur.
Les jetons d’accès ont une durée de vie limitée
c’est là qu’intervient le jeton d’actualisation.
Une fois que le jeton d’accès n’est plus valide, une demande peut être faite
auprès du serveur pour obtenir un nouveau jeton d’accès en présentant le
jeton d’actualisation.
Le jeton d’actualisation peut expirer mais leur durée de vie est beaucoup
plus longue. Cela résout le problème d’un utilisateur devant s’authentifier à
nouveau avec ses informations d’identification.
Réinitialisation du mot de passe :
Comment utiliser les questions de sécurité pour la vérification des
utilisateurs :
Les questions de sécurité sont un moyen facile de trouver des informations
sur la validité de l’utilisateur sans lui demander de données de vérification.
Le problème est qu’il n’y a pas beaucoup de types de questions de sécurité et
les réponses sont les mêmes pour de nombreux utilisateurs.
Cela permet à un attaquant de deviner facilement la question et la réponse.
Un moyen facile de rendre plus difficile la question est de laisser
l’utilisateur décider lui-même de la question à laquelle il souhaite
répondre.
A propos du jeton de réinitialisation de mot de passe :
Les jetons de réinitialisation de mot de passe permettent à un utilisateur
de réinitialiser un mot de passe sans informations sûres sur la vérification
de l’utilisateur.
Ils devraient donc être en sécurité. Il devrait être difficile de deviner un tel
jeton.
Le jeton ne doit également être valide que pendant une courte période et
ne doit pas être valide une fois que l’utilisateur a réussi à réinitialiser son
mot de passe.
Journalisation des actions des utilisateurs :
La journalisation à elle seule ne peut empêcher aucune attaque, mais elle
peut faciliter la détermination de l’attaque et la manière dont l’attaquant
a tenté de contourner la sécurité.
Vous pouvez également utiliser des journaux pour déterminer si un
compte a vraiment été détourné et s’il doit être retourné à l’utilisateur
légitime.
Mots de passe sécurisés :
Apprendre à créer des mots de passe forts et comment les stocker de manière
sécurisée.
Nous examinerons les recommandations les plus importantes faites par la
norme de mot de passe NIST.
L’institut national des normes et de la technologie (NIST) est une
agence fédérale non réglementaire au sein du département américain
du commerce.
Sa mission, est de promouvoir l’innovation et la compétitivité
industrielle aux Etats-Unis en faisant progresser la science, les normes
et la technologie de mesure à améliorer la sécurité économique et à
améliorer notre qualité de vie.
Norme de mot de passe NIST :
La norme de mot de passe NIST est une directive qui fournit des
recommandations pour la mise en œuvre de système de mot de passe
sécurisés.
Règle de mot de passe :
Pas de règles de composition.
Aucun indice de mot de passe.
Pas de questions de sécurité.
Pas de changement de mot de passe inutile.
Taille minimale de 8 caractères.
Prendre en charge tous les caractères.
Indicateur de force.
Vérification par rapport aux mauvais choix.
Convivialité :
Autoriser le collage dans la saisie de MdP
Permettre d’afficher le MdP
Offrir un indicateur de force
Violation de comptes :
Il est possible de savoir si l’un de vos comptes a été piraté à l’aide de « Have I
Been Pwned » ou « DEHASHED », si tel est le cas, mieux vaut changer vos
mots de passes dès que possible.
Améliorer la sécurité de vos comptes :
Utiliser des mots de passes différents pour vos différents comptes.
Utiliser des phrases de passe.
Utiliser un gestionnaire de mots de passe.
Utiliser l’authentificateur a deux facteurs.
Stockage des mots de passe :
Une fois qu’un mot de passe fort et sécurisé a été créé, il doit également être
stocké de manière sécurisée.
Le NIST donne des recommandations sur la façon dont les applications
doivent gérer les mots de passe et comment les stocker en toute sécurité.
Utiliser le chiffrement et un canal protégé pour demander des mots de passe.
Résistant aux attaques hors ligne.
Utiliser des sels.
Utiliser le hachage.
La dérivation de clé mémoire dur.
Facteur de coût élevé.
Sensitive data exposure
Problèmes :
Transit de donnée non chiffrée
Les données peuvent être sniffées
Xxe
Si l’analyseur prend en charge les dtd externes, nous pouvons donc faire
Exemple xxe dos
Blind xxe
Dans certains cas, vous ne verrez aucune sortie car bien que votre attaque
ait fonctionné, le champ n’est pas reflété dans la sortie de la page.
Ou la ressource que vous essayez de lire contient un caractère XML illégal
qui provoque l’échec de l’analyseur.
XXE mitigation
Afin de vous protéger contre les attaques xxe, vous devez vous assurer de
valider l’entre reçue d’un client non fiable. Dans le monde Java ,vous
pouvez également demander à l’analyseur d’ignorer complètement la dtd.
Si vous n’êtes pas en mesure de désactiver complètement la dtd, vous
pouvez également demander à l’analyseur xml d’ignorer les entités
externes.
Broken Access Control
Référence directes aux objets
Les références d’objet directes sont lorsqu’une application utilise une
entrée fournie par le client pour accéder aux données et aux objets
Cela peut ressembler à :
Insecure references objet direct
Les bonnes options telles que les jetons web json jwt sont une bonne
option pour l’authentification API et le contrôle d’accès en utilisant
une combinaison des revendications et une signature
numérique/cryptographique pour valider le consommateur.
Security Misconfiguration
Les attaquants tenteront souvent d'exploiter des failles non corrigées
ou d'accéder aux comptes par défaut, aux pages inutilisées, aux
fichiers et répertoires non protégés, etc. pour obtenir un accès non
autorisé ou une connaissance du système.
Réflechi
Le contenu malveillant d’une demande utilisateur est affiché à
l’utilisateur d’un navigateur web
Le contenu malveillant est écrit dans la page après la réponse
du serveur
L’ingénierie sociale est requise
Fonctionne avec les privilèges du navigateur hérités de
l’utilisateur dans le navigateur
XSS
Dom based
Le contenu malveillant d’une demande de l’utilisateur est utilisé
par les scripts côté client pour écrire du html sur sa propre page
Similaire au xss réfléchi
Fonctionne avec les privilèges du navigateur hérités de l’utilisateur
dans le navigateur
XSS
Stocké
Le contenu malveillant est stocké sur le serveur (bdd, fichier) et
affiché ultérieurement aux utilisateurs
L’ingénierie sociale n’est pas requise
Insecure Deserialization
Inconvénients:
SSL est plus lent à exécuter que le HTTP de base, donc les clients sont un peu plus lents.
Si vous n'avez pas le contrôle des clients, et ne pouvez pas forcer le serveur à utiliser SSL, un développeur
pourrait ne pas utiliser SSL, causant un risque de sécurité.
En résumé – si vous avez le contrôle des clients, ou pouvez vous assurer qu'ils utilisent SSL, HTTP Basic est un
bon choix. La lenteur de la SSL peut être annulée par la vitesse de une seule demande.
Authentification D'accès par HTTP Digest
Inconvénients :
Pour chaque appel nécessaire, le client doit en faire 2, ce qui rend le processus
légèrement plus lent que HTTP Basic.
HTTP Digest est vulnérable à un homme-dans-le-milieu attaque de sécurité qui
signifie essentiellement qu'il pourrait être piraté.
HTTP Digest empêche l'utilisation du cryptage de mot de passe fort, ce qui
signifie que les mots de passe stockés sur le serveur pourraient être piraté.
SOMMAIRE
INTRODUCTION
CONSTITUANTS D’UNE APPLICATION WEB
PROTOCOLE HTTP
LES MÉTHODES DE REQUÊTE HTTP :
PDU, GET, POST, PUT, DELETE, HEAD ET TRACE
LES VULNÉRABILITÉS DES APPLICATIONS WEB
AUTHENTIFICATION
LE FIREWALL RÉSEAU DANS LA PROTECTION
D'APPLICATIONS HTTP
SÉCURISATION DES FLUX AVEC SSL/TLS
CERTIFICATS NUMÉRIQUE X.509
CONFIGURATION DU SYSTÈME ET DES LOGICIELS
PRINCIPE DU DÉVELOPPEMENT SÉCURISÉ
LE FIREWALL RÉSEAU
DANS LA PROTECTION
D'APPLICATIONS HTTP
Définition
Le pare-feu filtre les flux grâce aux politiques de filtrage qui sont des
règles qui autorise ou non les flux
Le firewall réseau, son rôle et ses fonctions.
Un niveau supplémentaire de
sécurité peut être introduit avec
un 2ème pare-feu
Tier 1
Cette architecture protège un réseau local simple face à un réseau non fiable tel
qu’internet.
C’est le genre d’architecture que vous pouvez avoir à votre domicile
Problème 1 : les flux depuis Internet vers le serveur web traversent
systématiquement le LAN.
Problème 2 : le pare-feu est un point névralgique de l'architecture
Problème 3 : l'architecture ne propose aucune mesure de protection contre la
défiguration du site web
Architecture Pare-feu
Tier 2
Le premier problème peut être aisément corrigé en connectant directement le
serveur web de l'entreprise sur une des interfaces réseau du pare-feu.
Cette architecture corrige correctement le premier problème (les flux à destination
des serveurs Web ne circulent plus au travers du LAN) mais pas les deux autres dans
la mesure où le pare-feu constitue toujours un point critique de l'architecture et où
aucune protection spécifique n'est mise en place pour prendre en compte le risque
de défiguration du site web.
Architecture Pare-feu
Afin de prendre en compte le second problème, il convient de mettre en place deux pares-feux
L'un est placé en entrée de LAN (pare-feu interne, FWi) et l'autre à la frontière du WAN (pare-feu externe,
FWe). Le nœud entre DMZ, FWi et FWe est par exemple assuré par un commutateur réseau
La mise en place de ces deux pares-feux rend chacun de ces équipements non critiques. La compromission
de FWe ne permet pas à un attaquant d'attaquer directement le LAN (FWi est toujours en coupure), et la
compromission de FWi n'est pas aisée car, sauf en cas de compromission de FWe, aucun paquet de
l'attaquant n'est routé vers Fwi
La mise en place de ces deux pares-feux rend chacun de
ces équipements non critiques. La compromission de FWe
ne permet pas à un attaquant d'attaquer directement le
LAN (FWi est toujours en coupure), et la compromission
de FWi n'est pas aisée car, sauf en cas de compromission
de FWe, aucun paquet de l'attaquant n'est routé vers Fwi
Plus les équipements seront différents, plus le risque qu'un attaquant ait
connaissance d'une vulnérabilité exploitable sur les deux pares-feux sera faible
Par ailleurs, il est fortement recommandé d'ajouter sur la DMZ un serveur mandataire (proxy) en charge
d'effectuer un filtrage applicatif des échanges (dépollution, filtrage des contenus dangereux, maintien d’une
liste blanche des sites accessibles et/ou d’une liste noire des sites interdits) entre les machines du LAN et les
serveurs auxquels elles accèdent sur Internet
Architecture Pare-feu
Il est important de noter que, sur cette nouvelle architecture, la DMZ est en
coupure sur l'ensemble des flux. Il est donc préférable de la placer en coupure
physique sur les flux selon le principe présenté sur la Figure 5. L'utilisation d'une
coupure physique en lieu et place d'une coupure logique permet physiquement
de garantir qu'aucune communication n'est possible entre les deux pare-feux
sans passer par la DMZ. Sans cette coupure, il existe un risque qu’un flux sortant
soit adressé au WAN directement sans qu’il ne soit filtré au niveau applicatif
L'architecture obtenue est malheureusement encore imparfaite car elle ne
fournit toujours aucun mécanisme permettant de protéger le serveur web
contre une éventuelle défiguration.
Architecture Pare-feu
Tier 3
Architecture Pare-feu
La prise en compte de cette dernière menace nécessite de mettre en place deux DMZ : - une zone de service dite interne DMZi
connectée directement à FWi et destinée à recevoir un ensemble de services fonctionnels ; - une zone de service dite externe
DMZe connectée directement à FWe et destinée à recevoir des services de sécurité.
Tandis que la zone DMZe contient un reverse proxy dont le rôle est d'assurer un filtrage des requêtes applicatives des
internautes. Différents types de filtrage peuvent ainsi être effectués (analyse de requêtes suspectes avec des tailles d'URL trop
grandes, contenant des mots clefs associés à des bases de données, etc.). Contrairement au proxy qui analyse prioritairement
les réponses des serveurs externes aux requêtes, le reverse proxy analyse prioritairement les requêtes émanant de l’extérieur
La zone DMZe fournit un proxy tel que celui décrit dans les précédentes architectures
La protection du serveur web contre la défiguration s'effectue essentiellement grâce au reverse proxy de la DMZe
Cependant, il est important de comprendre que cette mesure seule ne permet pas de garantir la sécurité du serveur web.
En effet, il existe de nombreuses façons de défigurer une page web
Architecture Pare-feu
Une fois la suite choisie et le certificat reçu, le client vérifie la chaîne de certification.
Si le certificat n'est pas validé, le client émet une alerte qui met fin à la connexion. Sinon, il poursuit et envoie
un message contenant le pre master secret chiffré : le ClientKeyExchange.
À partir de là, le client et le serveur disposent tous les deux du pre master secret (le client l'a tiré au hasard, et
le serveur peut déchiffrer le ClientKeyExchange), ainsi que d'éléments aléatoires publics échangés lors des
messages ClientHello et ServerHello.
Ces éléments partagés sont alors dérivés pour fournir les clés symétriques qui seront utilisées pour protéger
le trac en condentialité
Des messages ChangeCipherSpec sont échangés pour indiquer l'activation des paramètres
(algorithmes et clés) négociés. Les messages Finished sont
donc les premiers à être protégés cryptographiquement,
et contiennent un haché de l'ensemble des messages
échangés pendant la négociation, afin de garantir a
posteriori l'intégrité de la négociation.
Die-Hellman éphémère
Leur sérieux
Leur gamme de produits
Leur capacité à répondre à vos besoins
Outre les critères techniques (qui sont normalement la base de votre
choix), vous pourrez sélectionner une autorité en fonction de sa notoriété
(auprès de votre public) et de ses prix.
Pourquoi choisir X509 TBS ?
Basé en cloud + entièrement géré en tant que service - c’est une excellente option si
vous avez besoin de la manière la plus rapide et la plus simple de placer un WAF au-
devant de vos applications (surtout si vous avez des ressources internes limitées en
matière de sécurité/informatique)
Basé en cloud + géré en interne - obtenez toute la flexibilité et la portabilité des
politiques de sécurité du cloud tout en gardant le contrôle de la gestion du trafic et
des paramètres de sécurité
Basé en cloud + provisionné automatiquement - c’est la façon la plus simple de
démarrer avec un WAF en cloud, en déployant la politique de sécurité de façon
simple et rentable
WAF avancé sur site (appliance virtuelle ou matérielle) - répond aux besoins les plus
exigeants en matière de déploiement, lorsque la flexibilité, les performances et des
préoccupations de sécurité plus poussées sont essentielles à la mission
SOMMAIRE
INTRODUCTION
CONSTITUANTS D’UNE APPLICATION WEB
PROTOCOLE HTTP
LES MÉTHODES DE REQUÊTE HTTP :
PDU, GET, POST, PUT, DELETE, HEAD ET TRACE
LES VULNÉRABILITÉS DES APPLICATIONS WEB
AUTHENTIFICATION
LE FIREWALL RÉSEAU DANS LA PROTECTION
D'APPLICATIONS HTTP
SÉCURISATION DES FLUX AVEC SSL/TLS
CERTIFICATS NUMÉRIQUE X.509
CONFIGURATION DU SYSTÈME ET DES LOGICIELS
PRINCIPE DU DÉVELOPPEMENT SÉCURISÉ
CONFIGURATION
DU SYSTÈME
ET DES LOGICIELS
Un site internet ne fonctionne pas de lui même, mais repose sur de
nombreux composants nécessaires à son fonctionnement.
Dans tous les case, ces procédés, process, checklist devront être
maintenus et revus par une vraie équipe comprenant des architectes
matériels, réseaux et logiciels. Travailler seul sur un tel mécanisme n’est
clairement pas une bonne idée.
S’assurer que vous avez une politique de maintenance solide est également un
point clé pour la sécurité web. Correctement mettre en place des serveurs et des
applications ne sera pas suffisant si vous ne les mettez pas à jour régulièrement.
Systèmes d’exploitation, firmware, le langage de programmation lui-même (tel
que PHP)… tous ces éléments doivent être maintenus à jours afin d’être certain
que les nouvelles failles de sécurité (rendues publiques) ne seront pas exploitées
sur votre système.
Vous avez très probablement entendu parlé de la vulnérabilité “Heartbleed”. Les
pirates ont commencé à exploiter massivement cette faille dès que cette dernière
a été rendue publique (et certain avant qu’elle le soit). Mettre à jour la librairie
“Open SSL” est une des étapes nécessaires afin d’éviter l’exploitation de la
vulnérabilité. Si vous ne le faites pas, votre site, s’il utilise Open SSL, sera vulnérable
à une attaque sur les données que vous aurez tenté de protéger avec SSL.
Effectuer un audit de sécurité, test d’intrusion d’application web est
également critique, afin d’être certain que rien n’a été oublié et obtenir la
confirmation que la plateforme est suffisamment sécurisée !
C’est en gardant cette idée à l’esprit que nous abordons les concepts de la conception
sécurisée suivants, ainsi que les contrôles de sécurité dont vous devez tenir compte lorsque
vous concevez des applications sécurisées :