32
ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé n clerc@te kigo.com

ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé [email protected]

Embed Size (px)

Citation preview

Page 1: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

ASP.NET 2.0 et la sécurité

ASP.NET 2.0 et la sécurité

Nicolas CLERCConsultant Associé

[email protected]

Page 2: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

TekigoTekigo73 chemin des 73 chemin des

EssartsEssarts69126 Brindas69126 Brindas

www.tekigo.comwww.tekigo.com

+33 (0)6 74 60 87 +33 (0)6 74 60 87 7272

[email protected]@tekigo.comm

Nicolas CLERCNicolas CLERCConsultant AssociéConsultant Associé

[email protected] [email protected]

Télécharger les codes sources des démos sur notre site Web

Page 3: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Agenda

Gestion des utilisateursGestion des utilisateursL’authentification des utilisateursL’authentification des utilisateurs

Memberships & RolesMemberships & Roles

Les nouveaux contrôles web associésLes nouveaux contrôles web associés

Sécuriser son application WebSécuriser son application Web

Techniques avancéesTechniques avancées

Le suivi de fonctionnementLe suivi de fonctionnement

Page 4: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Agenda

Gestion des utilisateursGestion des utilisateursL’authentification des utilisateursL’authentification des utilisateurs

Memberships & RolesMemberships & Roles

Les nouveaux contrôles web associésLes nouveaux contrôles web associés

Sécuriser son application WebSécuriser son application Web

Techniques avancéesTechniques avancées

Le suivi de fonctionnementLe suivi de fonctionnement

Page 5: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Authentification & Autorisation

Reconnaissance de l’utilisateurReconnaissance de l’utilisateur

Sécurisation de l’accès aux éléments d’une Sécurisation de l’accès aux éléments d’une applicationapplication

Par utilisateursPar utilisateurs

Par rôlesPar rôles

Support de plusieurs modes d’authentificationSupport de plusieurs modes d’authentificationFormulaire (webform)Formulaire (webform)

WindowsWindows

PassportPassport

API standardAPI standardLes applications sont indépendantes du mode Les applications sont indépendantes du mode d’authentificationd’authentification

Configuré dans le fichier Configuré dans le fichier Web.configWeb.config

Compatibilité ascendante avec .NET 1.1Compatibilité ascendante avec .NET 1.1

Page 6: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Authentification

La classe La classe FormsAuthenticationFormsAuthenticationAccès aux informations du web.configAccès aux informations du web.config

RedirectFromLoginPageRedirectFromLoginPage()()

SignOut()SignOut()

……()()

Page 7: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Authentification

Les nouveautés d’ASP.NET 2.0 :Les nouveautés d’ASP.NET 2.0 :cookieLess (sans les pépites de chocolat)cookieLess (sans les pépites de chocolat)

UseCookie : toujoursUseCookie : toujoursAutoDetect : cookie si supportéAutoDetect : cookie si supportéUseDeviceProfile UseDeviceProfile : cookie si supporté mais pas de : cookie si supporté mais pas de vérification (utilisation de l’identité du navigateur)vérification (utilisation de l’identité du navigateur)UseUri : jamaisUseUri : jamais

defaultUrl : default.aspxdefaultUrl : default.aspxdomain : domaine de validité du cookiedomain : domaine de validité du cookieUtilisateur anonymeUtilisateur anonymeapplication Web d’administration de la application Web d’administration de la sécuritésécurité……

Page 8: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

La sécurité avec ASP.NET 1.1S

tockag

e

Fon

cti

on

nalité

Affi

ch

ag

e

Sécurité d’accès Sécurité d’accès aux pagesaux pages

API de API de programmationprogrammation

Page 9: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

La sécurité avec ASP.NET 2.0S

tockag

e

Fon

cti

on

nalité

Affi

ch

ag

e

Sécurité d’accès Sécurité d’accès aux pagesaux pages

API de programmationAPI de programmation

Page 10: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Démonstration

Démonstration

Mise en œuvre de l’authentification

Page 11: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Le p’tit truc

AttentionAttention au nom du cookie si au nom du cookie si plusieurs applications sécurisées plusieurs applications sécurisées hébergées sur le même serveurhébergées sur le même serveur

risque de télescopage/écrasementrisque de télescopage/écrasement

Ne protège que les éléments gérés par Ne protège que les éléments gérés par l’extension ISAPI ASP.NET de IISl’extension ISAPI ASP.NET de IIS

.aspx, .asmx, .ashx, ….aspx, .asmx, .ashx, …

mais pas :mais pas : .html , .asp .html , .asp

Page 12: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Membership

Gestion des listes d’utilisateursGestion des listes d’utilisateursIndépendant du stockageIndépendant du stockage

Simplification de l’accès et de la Simplification de l’accès et de la manipulation des informations utilisateursmanipulation des informations utilisateurs

Vérification d’identitéVérification d’identité

Gestion/modification des mots de passeGestion/modification des mots de passe

Création/modification/suppression d’utilisateurCréation/modification/suppression d’utilisateur

RechercheRecherche

Péremption de la connexionPéremption de la connexion

System.Web.Security.MembershipSystem.Web.Security.Membership

Page 13: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Rôles

Cœur de l’API déjà présent dans .NET 1.1 Cœur de l’API déjà présent dans .NET 1.1 mais pas l’enrobage … pas mal de ligne de mais pas l’enrobage … pas mal de ligne de code à écrire.code à écrire.

User.IsInRole()User.IsInRole()

Dans ASP.NET 2.0Dans ASP.NET 2.0Chargement et persistance automatique des rôles Chargement et persistance automatique des rôles affecté à l’utilisateuraffecté à l’utilisateur

Indépendant du stockage (Indépendant du stockage (ProviderProvider))

Fonctions de modification/consultation des rôles et Fonctions de modification/consultation des rôles et des utilisateurs associésdes utilisateurs associés

Page 14: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

La sécurité avec ASP.NET 2.0S

tockag

e

Fon

cti

on

nalité

Affi

ch

ag

e

Sécurité d’accès Sécurité d’accès aux pagesaux pages

API de programmationAPI de programmation

MembershipMembership

ProviderProvider

RolesRoles

application application web web

d’administratid’administrationon

Page 15: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Démonstration

Démonstration

Membership et rôles

Page 16: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Les contrôles Web

Un ensemble de contrôles web prêt à Un ensemble de contrôles web prêt à intégrer dans vos pagesintégrer dans vos pages

Login, Login,

Création d’un utilisateur, Création d’un utilisateur,

Modification/Récupération du mot de passeModification/Récupération du mot de passe

Affichage des informations Affichage des informations d’authentificationd’authentification

Paramétrable & personnalisableParamétrable & personnalisable

Page 17: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

La sécurité avec ASP.NET 2.0S

tockag

e

Fon

cti

on

nalité

Affi

ch

ag

e

Sécurité d’accès Sécurité d’accès aux pagesaux pages

API de programmationAPI de programmation

MembershipMembership

ProviderProvider

RolesRoles

Site Site web web

d’administratid’administrationon

Contrôle web de gestion de la sécuritéContrôle web de gestion de la sécurité

loginlogin

Création userCréation user

Changement mot de passeChangement mot de passe

AffichageAffichage

Page 18: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Démonstration

Démonstration

Les nouveaux contrôles

Page 19: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Agenda

Gestion des utilisateursGestion des utilisateursL’authentification des utilisateursL’authentification des utilisateurs

Memberships & RolesMemberships & Roles

Les nouveaux contrôles web associésLes nouveaux contrôles web associés

Sécuriser son application WebSécuriser son application Web

Techniques avancéesTechniques avancées

Le suivi de fonctionnementLe suivi de fonctionnement

Page 20: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Saisie des donnéesInjection de codeInjection de code

SQLSQL toujours utiliser des requêtes paramétréestoujours utiliser des requêtes paramétrées

SQL Server : paramètre nommé : SQL Server : paramètre nommé : @nomDuParametre @nomDuParametre

Access : paramètre par position : Access : paramètre par position : ? ?

Page 21: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

L’injection de code SQL

SELECT COUNT (*) FROM UsersWHERE UserName=‘Jeff’AND Password=‘imbatman’

Une requête normale

SELECT COUNT (*) FROM UsersWHERE UserName=‘’ or 1=1--AND Password=‘’

Une requête frauduleuse

"or 1=1" toujours vrai "--" Commentaire

“SELECT COUNT (*) FROM UsersWHERE UserName=‘”+param1+”’AND Password=‘”+param2+”’”

Code source

Page 22: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Saisie des données

Injection de code Injection de code HTML / JavascriptHTML / Javascript

Cross Site ScriptingCross Site Scripting

Ne pas autoriser la saisie de code HTMLNe pas autoriser la saisie de code HTML

ToujoursToujours valider les valider les données de l’utilisateurdonnées de l’utilisateur

Page 23: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Validation de la saisie

Toujours valider les informations de Toujours valider les informations de l’utilisateur :l’utilisateur :

Facultativement au niveau du navigateur Facultativement au niveau du navigateur ergonomie, optimisationergonomie, optimisation

Impérativement au niveau serveurImpérativement au niveau serveursécuritésécurité

Bibliothèque de contrôle de validationBibliothèque de contrôle de validationPuissante : expression régulière, …Puissante : expression régulière, …Sécurisé : optionnellement client MAIS Sécurisé : optionnellement client MAIS impérativementimpérativement serveur serveurExtensibleExtensible

Groupe de validationGroupe de validationpermet de définir des contrôles optionnels (non permet de définir des contrôles optionnels (non bloquant)bloquant)

Page 24: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Démonstration

Démonstration

Validation de saisie

Page 25: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Agenda

Gestion des utilisateursGestion des utilisateursL’authentification des utilisateursL’authentification des utilisateurs

Memberships & RolesMemberships & Roles

Les nouveaux contrôles web associésLes nouveaux contrôles web associés

Sécuriser son application WebSécuriser son application Web

Techniques avancéesTechniques avancées

Le suivi de fonctionnementLe suivi de fonctionnement

Page 26: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Filtrage des données« Pour vivre heureux, vivons cachés. »« Pour vivre heureux, vivons cachés. »

Utilisation des HTTPModuleUtilisation des HTTPModuleLimiter les informations renvoyées au Limiter les informations renvoyées au navigateurnavigateur

Filtrer les informations envoyées par le Filtrer les informations envoyées par le navigateurnavigateur

‘‘obfusquer’ le code renvoyé au navigateurobfusquer’ le code renvoyé au navigateur

timestamptimestamp

HTTPHandler : nouvelle extension à gérerHTTPHandler : nouvelle extension à gérer

Page 27: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Chaine d’appel ASP.NET

Serveur Serveur WEBWEB

IISIIS

ASP ASP DevServerDevServer

ASP.N

ET R

UN

TIM

EA

SP.N

ET R

UN

TIM

E

HTTP HTTP HandlerHandler

.ASPX.ASPX

HTTP HTTP HandlerHandlertrace.axdtrace.axd

HTTP HTTP HandlerHandlervscache.axvscache.ax

dd

HTTP HTTP ModulModul

ee

HTTP HTTP ModulModul

ee

HTTP HTTP ModulModul

eePage.ASPXPage.ASPX

Page 28: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Démonstration

Démonstration

HTTP Module

Page 29: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Agenda

Gestion des utilisateursGestion des utilisateursL’authentification des utilisateursL’authentification des utilisateurs

Memberships & RolesMemberships & Roles

Les nouveaux contrôles web associésLes nouveaux contrôles web associés

Sécuriser son application WebSécuriser son application Web

Techniques avancéesTechniques avancées

Le suivi de fonctionnementLe suivi de fonctionnement

Page 30: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Le Monitoring

Utilisation des compteurs de Utilisation des compteurs de performances associés aux applications performances associés aux applications webwebCréer des compteurs de performances « Créer des compteurs de performances « applicatif »applicatif »La « Health Monitoring API »La « Health Monitoring API »

SurveillanceSurveillanceRemontée automatique de problèmes Remontée automatique de problèmes potentielspotentielsConfig par défaut dans le Config par défaut dans le machine.configmachine.config

Intégrations aux outils de monitoringIntégrations aux outils de monitoringMicrosoft Operation Manager (MOM)Microsoft Operation Manager (MOM)Windows Management InstrumentationWindows Management Instrumentation

Page 31: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Démonstration

Démonstration

Monitoring

Page 32: ASP.NET 2.0 et la sécurité Nicolas CLERC Consultant Associé nclerc@tekigo.com

Microsoft FranceMicrosoft France18, avenue du Québec18, avenue du Québec

91 957 Courtaboeuf Cedex91 957 Courtaboeuf Cedex

www.microsoft.com/france

0 825 827 8290 825 827 829

[email protected]@microsoft.com