Upload
irenee-bouche
View
104
Download
0
Embed Size (px)
Citation preview
ASP.NET 2.0 et la sécurité
ASP.NET 2.0 et la sécurité
Nicolas CLERCConsultant Associé
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
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
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
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
Authentification
La classe La classe FormsAuthenticationFormsAuthenticationAccès aux informations du web.configAccès aux informations du web.config
RedirectFromLoginPageRedirectFromLoginPage()()
SignOut()SignOut()
……()()
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é……
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
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
Démonstration
Démonstration
Mise en œuvre de l’authentification
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
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
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
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
Démonstration
Démonstration
Membership et rôles
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
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
Démonstration
Démonstration
Les nouveaux contrôles
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
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 : ? ?
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
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
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)
Démonstration
Démonstration
Validation de saisie
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
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
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
Démonstration
Démonstration
HTTP Module
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
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
Démonstration
Démonstration
Monitoring
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