Sécurisez vosSécurisez vos a applicationspplications àà l'aidel'aide dede MicrosoftMicrosoft .NET.NET FrameworkFramework
Sécurisez vosSécurisez vos a applicationspplications àà l'aidel'aide dede MicrosoftMicrosoft .NET.NET FrameworkFramework
Eric Mittelette & Eric Vernié & Pascal Eric Mittelette & Eric Vernié & Pascal Belaud Belaud Relation Technique DéveloppeursRelation Technique DéveloppeursMicrosoft FranceMicrosoft France
CeCe queque nousnous allonsallons étudierétudier
FonctionnalitésFonctionnalités dede sécuritésécurité dudu .NET.NET FrameworkFrameworkEn quoi une code .NET est plus sécurisé par défaut qu’un code natifEn quoi une code .NET est plus sécurisé par défaut qu’un code natif
Sécurité basée sur les rôles (Role Based)Sécurité basée sur les rôles (Role Based)Gestion de rôles applicatifs basés ou non sur le log-on WindowsGestion de rôles applicatifs basés ou non sur le log-on Windows
Sécurité d'accès au code (CAS)Sécurité d'accès au code (CAS)Vérification de « qui fait quoi » dans le codeVérification de « qui fait quoi » dans le code
CryptographieCryptographieEn quoi le .NET Framework simplifie t il les codes nécessitant de la En quoi le .NET Framework simplifie t il les codes nécessitant de la cryptographie. cryptographie.
SQL Server 2005 : quoi de neuf ?SQL Server 2005 : quoi de neuf ?
ProgrammeProgramme
FonctionnalitésFonctionnalités dede sécuritésécurité dede .NET.NET FrameworkFramework
Sécurité basée sur les rôlesSécurité basée sur les rôles
Sécurité d'accès au codeSécurité d'accès au code
CryptographieCryptographie
SécuritéSécurité dede l'exécutionl'exécution managéemanagée .NET.NET
LesLes fonctionnalitésfonctionnalités dede sécuritésécurité dede .NET.NET Vous aident à développer des applications sûresVous aident à développer des applications sûres
Comprennent de nombreux composants, dont :Comprennent de nombreux composants, dont :Vérification de typeVérification de type
Gestionnaire d'exceptionsGestionnaire d'exceptions
Moteur de sécuritéMoteur de sécurité
Complètent sans la remplacer la sécurité de Complètent sans la remplacer la sécurité de WindowsWindows
SystèmeSystème dede typetype sécurisésécurisé
UnUn codecode dede typetype sécurisésécurisé ::Empêche le débordement de mémoire tamponEmpêche le débordement de mémoire tamponLimite l'accès à des emplacements de mémoire Limite l'accès à des emplacements de mémoire autorisésautorisésPermet à plusieurs assemblage de s'exécuter dans Permet à plusieurs assemblage de s'exécuter dans le même processusle même processus
Les domaines d'application permettent :Les domaines d'application permettent :AppDomain : Notion de sous processus…AppDomain : Notion de sous processus…De meilleures performancesDe meilleures performancesUne plus grande sécurité du code par isolationUne plus grande sécurité du code par isolation
ProtectionProtection contrecontre lele débordementdébordement dede mémoiremémoire tampontampon
LaLa vérificationvérification dudu typetype empêcheempêche lesles remplacementsremplacements arbitrairesarbitraires dansdans lala mémoiremémoireLes objets de classe Les objets de classe System.StringSystem.String .NET .NET sont immuablessont immuables
La classe La classe System.Text.StringBuilderSystem.Text.StringBuilder .NET vérifie .NET vérifie les limites du tamponles limites du tampon
void CopyString (string src){
stringDest = src;}
InterceptionInterception desdes erreurserreurs arithmétiquesarithmétiques
L'interceptionL'interception desdes erreurserreurs arithmétiquesarithmétiques estest activéeactivée enen utilisantutilisant ::
Le mot clé Le mot clé checked checked Les paramètres du projetLes paramètres du projet
byte b=0;while (true){
Console.WriteLine (b);
checked{
b++;}
}
Vérification du codeVérification du code
Possibilité de vérifier son code :Possibilité de vérifier son code :Option du compilateur : Csc / checked[+;-]Option du compilateur : Csc / checked[+;-]
Instruction checked/uncheckedInstruction checked/unchecked
Opérateur checked(….)Opérateur checked(….)
Saisie infos
Fabrique de Classe
Validation mot de passe
BDChargement des rôles
Comment éviter la saisie du mot de passe en clair ?
Affecter les politiques de sécurité en fonction des
rôles
Affichage des données
Comment faire confiance aux dlls chargées dynamiquement ?
Comment éviter que n’importe qui appel ma fabrique de classe ?
Sous quelle forme dois-je stocker le mot de passe ?
Sous quelle forme dois-je stocker la chaîne de connexion ?
Architecture simplifiée de la Architecture simplifiée de la démo démo
Qu’est-ce qui peut me garantir la sécurité d’accès de mes objets de
base de données ?
DémonstrationDémonstration 11 SécuritéSécurité desdes typestypes
Buffer overrun vs .NETBuffer overrun vs .NETGestion des secrets vs stringGestion des secrets vs string
DémonstrationDémonstration 11 SécuritéSécurité desdes typestypes
Buffer overrun vs .NETBuffer overrun vs .NETGestion des secrets vs stringGestion des secrets vs string
AssemblagesAssemblages avecavec nomnom fortfort
LesLes nomsnoms fortsforts sontsontDes identificateurs uniques Des identificateurs uniques (contenant une clé publique)(contenant une clé publique)Utilisés pour signer numériquement Utilisés pour signer numériquement des assemblysdes assemblys
Les assemblages avec nom fortLes assemblages avec nom fortEmpêchent la falsificationEmpêchent la falsificationConfirment l'identité de l'éditeur de Confirment l'identité de l'éditeur de l'assemblyl'assemblyAutorisent les composants côte à côteAutorisent les composants côte à côte
sn –k Ma_Clé_Complète.snk
Assemblies et SignatureAssemblies et Signature
[assembly: AssemblyKeyFile(@"Cle.snk")]
ILIL
Metadonnées
Manifeste
En-Tête CLR
Signature numérique RSA
Clé publique
Fichier
PE
Haché
Valeurde
hachageSigné avec
La clé privée
SignatureNumérique RSA
Intégré dans le fichier PE
LeLe stockagestockage isoléisolé
FournitFournit unun systèmesystème dede fichiersfichiers virtuelvirtuel
Autorise les quotasAutorise les quotas
Met en œuvre l'isolation du Met en œuvre l'isolation du système de fichiers en fonction :système de fichiers en fonction :
De l'identité de l'applicationDe l'identité de l'application
De l'identité de l'utilisateurDe l'identité de l'utilisateur
IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForAssembly();
ProgrammeProgramme
FonctionnalitésFonctionnalités dede sécuritésécurité dede .NET.NET FrameworkFramework
Sécurité basée sur les rôlesSécurité basée sur les rôles
Sécurité d'accès au codeSécurité d'accès au code
CryptographieCryptographie
AuthentificationAuthentification etet AutorisationAutorisation
L'authentificationL'authentification demandedemande ::«« QuiQui êtes-vousêtes-vous ?»?»
«« Êtes-vousÊtes-vous vraimentvraiment lala personnepersonne queque vousvous prétendezprétendez êtreêtre ?? »»
L'autorisation demande :L'autorisation demande :« Êtes-vous autorisé à … ? »« Êtes-vous autorisé à … ? »
IdentitésIdentités etet entitésentités dede sécuritésécurité
UneUne identitéidentité contientcontient desdes informationsinformations sursur unun utilisateur,utilisateur, commecomme sonson nomnom dede connexionconnexion
Une entité de sécurité contient des informations Une entité de sécurité contient des informations de rôle sur un utilisateur ou un ordinateurde rôle sur un utilisateur ou un ordinateur
.NET Framework propose :.NET Framework propose :Les objetsLes objets WindowsIdentityWindowsIdentity et et WindowsPrincipalWindowsPrincipal
Les objetsLes objets GenericIdentityGenericIdentity et et GenericPrincipalGenericPrincipal
CréationCréation d'identitésd'identités etet d'entitésd'entités dede sécuritésécurité WindowsWindows
UtiliserUtiliser lesles objetsobjets WindowsIdentityWindowsIdentity etet
WindowsPrincipalWindowsPrincipal pourpour ::
Une validationUne validation
Plusieurs validationsPlusieurs validations
WindowsIdentityWindowsIdentity mon_Identmon_Ident == WindowsIdentity.GetCurrent();WindowsIdentity.GetCurrent();WindowsPrincipal mon_Ent = new WindowsPrincipal mon_Ent = new
WindowsPrincipal(mon_Ident);WindowsPrincipal(mon_Ident);
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);WindowsPrincipal mon_Ent = System.Threading.Thread.CurrentPrincipal;WindowsPrincipal mon_Ent = System.Threading.Thread.CurrentPrincipal;
CréationCréation d'identitésd'identités etet d'entitésd'entités dede sécuritésécurité génériquesgénériques
CréerCréer unun objetobjet GenericIdentityGenericIdentity etet unun objetobjet GenericPrincipalGenericPrincipal
Attacher l'objet Attacher l'objet GenericPrincipalGenericPrincipal au thread au thread actuelactuel
GenericIdentityGenericIdentity mon_Identmon_Ident == newnew GenericIdentity("Utilisateur1");GenericIdentity("Utilisateur1");
string[] roles = {"Directeur", "Caissier"};string[] roles = {"Directeur", "Caissier"};GenericPrincipal mon_Ent =GenericPrincipal mon_Ent = new GenericPrincipal(mon_Ident, roles);new GenericPrincipal(mon_Ident, roles);
System.Threading.Thread.CurrentPrincipalSystem.Threading.Thread.CurrentPrincipal == mon_Ent;mon_Ent;
RéalisationRéalisation dede vérificationsvérifications dede sécuritésécurité
UtiliserUtiliser lesles membresmembres identitéidentité etet entitéentité dansdans dudu codecodePar exemple, en utilisant la propriété Par exemple, en utilisant la propriété NameName de l'objet de l'objet Identity pour vérifier le nom de connexion de l'utilisateurIdentity pour vérifier le nom de connexion de l'utilisateur
Par exemple, en utilisant la méthode Par exemple, en utilisant la méthode IsInRoleIsInRole de l'objet de l'objet Principal pour vérifier l'appartenance à un rôlePrincipal pour vérifier l'appartenance à un rôle
ifif (String.Compare(mon_Ent.Identity.Name,(String.Compare(mon_Ent.Identity.Name, "DOMAINE\\Fred","DOMAINE\\Fred", true)==0)true)==0){{ // Effectuer une action// Effectuer une action}}
ifif (mon_Ent.IsInRole("BUILTIN\\Administrateurs"))(mon_Ent.IsInRole("BUILTIN\\Administrateurs")){{ // Effectuer une action// Effectuer une action}}
VérificationsVérifications dede sécuritésécurité impérativesimpératives etet déclarativesdéclaratives
UtiliserUtiliser desdes autorisationsautorisations pourpour effectuereffectuer desdes vérificationsvérifications dede sécuritésécurité baséesbasées sursur lesles rôlesrôles
Vérifications impérativesVérifications impératives
PrincipalPermissionPrincipalPermission aut_Entaut_Ent == newnew PrincipalPermission("Caissier",PrincipalPermission("Caissier", “Directeur”,“Directeur”, true);true);
trytry{{ aut_Ent.Demand(); aut_Ent.Demand(); //Les éléments ci-dessus correspondent-ils à ceux de //Les éléments ci-dessus correspondent-ils à ceux de
l'entité de sécurité active ?l'entité de sécurité active ?}}
[PrincipalPermission(SecurityAction.Demand,[PrincipalPermission(SecurityAction.Demand, Role="Caissier",Role="Caissier", Authenticated=true)]Authenticated=true)]
VérificationsVérifications déclarativesdéclaratives
DémonstrationDémonstration 22 SécuritéSécurité baséebasée sursur lesles rôlesrôles
DémonstrationDémonstration 22 SécuritéSécurité baséebasée sursur lesles rôlesrôles
ProgrammeProgramme
FonctionnalitésFonctionnalités dede sécuritésécurité dede .NET.NET FrameworkFramework
Sécurité basée sur les rôlesSécurité basée sur les rôles
Sécurité d'accès au codeSécurité d'accès au code
CryptographieCryptographie
SécuritéSécurité baséebasée sursur lesles preuvespreuves
LesLes preuvespreuvesSont évaluées au chargement d'un assemblySont évaluées au chargement d'un assembly
Servent à déterminer les autorisations Servent à déterminer les autorisations de l'assemblyde l'assembly
Peuvent comprendre les éléments Peuvent comprendre les éléments suivants de l'assembly :suivants de l'assembly :
Informations de nom fortInformations de nom fort
URLURL
ZoneZone
Signature AuthenticodeSignature Authenticode
StratégiesStratégies dede sécuritésécurité
EntitéEntité dede sécuritésécurité DescriptionDescription
StratégieStratégie
DéfinieDéfinie parpar lesles administrateursadministrateursAppliquée au moment de Appliquée au moment de l'exécutionl'exécutionSimplifie l'administrationSimplifie l'administrationContient des autorisationsContient des autorisationsContient des groupes de codesContient des groupes de codes
GroupeGroupe dede codescodes
AssocieAssocie desdes composantscomposants similairessimilairesBasé sur les preuvesBasé sur les preuvesLié à un ou plusieurs jeux Lié à un ou plusieurs jeux d'autorisationsd'autorisations
JeuJeu d'autorisationsd'autorisations
EstEst unun ensembleensemble d'autorisationsd'autorisations accordéesaccordées
Parcours de pile et vérification de la sécuritéParcours de pile et vérification de la sécurité
Pile des appels
Système de sécurité
Votre_AssemblyBVotre_AssemblyB
AssemblyAAssemblyA
Assembly .NET Framework
Assembly .NET Framework
Appel à ReadFile
Appel à ReadFile
Accorder : Execute
1.1. Un Un assemblyAassemblyA demande l'accès demande l'accès à une méthode de votre à une méthode de votre assembly assembly
2.2. Votre Votre assemblyBassemblyB transmet la transmet la demande à un assembly .NET demande à un assembly .NET FrameworkFramework
3.3. Le système de sécurité vérifie Le système de sécurité vérifie que les appelants de la pile que les appelants de la pile disposent des autorisations disposent des autorisations requisesrequises
4.4. Le système de sécurité accorde Le système de sécurité accorde l'accès ou lève une exceptionl'accès ou lève une exception
Accorder : ReadFileAccorder : ReadFile
Accorder : ReadFile
Demande d'autorisation
Exception de sécurité Accès refusé
Exception de sécurité Accès refuséAccorder l'accès ?Accorder l'accès ?
TypesTypes dede vérificationsvérifications dede sécuritésécurité
LesLes vérificationsvérifications dede sécuritésécurité impérativesimpérativesCréent des objets Créent des objets PermissionPermissionAppellent des méthodes Appellent des méthodes PermissionPermission
Les vérifications de sécurité déclarativesLes vérifications de sécurité déclarativesUtilisent des attributs Utilisent des attributs PermissionPermissionS'appliquent à des méthodes ou à des classesS'appliquent à des méthodes ou à des classes
Les vérifications de sécurité de substitutionLes vérifications de sécurité de substitutionUtilisent la méthode Utilisent la méthode AssertAssertEmpêchent le parcours de la pileEmpêchent le parcours de la pile
DemandesDemandes d'autorisationsd'autorisations
UtiliséesUtilisées parpar lesles développeursdéveloppeurs pourpour indiquerindiquer lesles autorisationsautorisations requisesrequises
Implémentées sous forme d'attributsImplémentées sous forme d'attributs
Empêchent le chargement d'un assembly en Empêchent le chargement d'un assembly en cas d'absence des autorisations minimalescas d'absence des autorisations minimales
//Je//Je nene m'exécuteraim'exécuterai queque sisi jeje peuxpeux appelerappeler dudu codecode nonnon managémanagé
[assembly:SecurityPermission[assembly:SecurityPermission (SecurityAction.RequestMinimum,(SecurityAction.RequestMinimum, UnmanagedCode=true)]UnmanagedCode=true)]
DémonstrationDémonstration 33 SécuritéSécurité d'accèsd'accès auau codecode
RéalisationRéalisation dede vérificationsvérifications dede sécuritésécuritéDemandesDemandes d'autorisationsd'autorisations
DémonstrationDémonstration 33 SécuritéSécurité d'accèsd'accès auau codecode
RéalisationRéalisation dede vérificationsvérifications dede sécuritésécuritéDemandesDemandes d'autorisationsd'autorisations
ProgrammeProgramme
FonctionnalitésFonctionnalités dede sécuritésécurité dede .NET.NET FrameworkFramework
Sécurité basée sur les rôles Sécurité basée sur les rôles
Sécurité d'accès au codeSécurité d'accès au code
CryptographieCryptographie
RappelsRappels concernantconcernant lala cryptographiecryptographie
TermeTerme dede cryptographiecryptographie DescriptionDescription
CryptageCryptage symétriquesymétrique CryptageCryptage etet décryptagedécryptage desdes donnéesdonnées avecavec uneune cléclé secrètesecrète
CryptageCryptage asymétriqueasymétrique CryptageCryptage etet décryptagedécryptage desdes donnéesdonnées avecavec uneune pairepaire cléclé publique/clépublique/clé privéeprivée
HachageHachageMappageMappage d'uned'une longuelongue chaînechaîne dede donnéesdonnées àà uneune chaînechaîne dede donnéesdonnées courte,courte, dede tailletaille fixefixe
SignatureSignature numériquenumérique HachageHachage dede donnéesdonnées etet cryptagecryptage dede lala valeurvaleur dede hachagehachage avecavec uneune cléclé privéeprivée
.NET.NET FrameworkFramework fournitfournit desdes classesclasses quiqui implémententimplémentent cesces
opérationsopérations
Cryptographie et Cryptographie et Framework.NETFramework.NET
Plusieurs namespaces .NET consacrés à la Plusieurs namespaces .NET consacrés à la cryptographiecryptographie
System.Security.CryptographySystem.Security.Cryptography Fournis les services cryptographiques :Fournis les services cryptographiques :
Encodage/Décodage sécurisé des donnéesEncodage/Décodage sécurisé des donnéeshashing, random number, message authentication. hashing, random number, message authentication. … …
System.Security.Cryptography.X509CertificatesSystem.Security.Cryptography.X509CertificatesAuthenticode X.509 v.3 certificate. Authenticode X.509 v.3 certificate. Le certificat est signé avec une « private key » qui identifie Le certificat est signé avec une « private key » qui identifie explicitement et de manière unique le propriétaire du explicitement et de manière unique le propriétaire du certificat. certificat.
System.Security.Cryptography.XmlSystem.Security.Cryptography.Xml Réservé a données XMLRéservé a données XMLPermet de signer les « objets » XML avec une signature digitalePermet de signer les « objets » XML avec une signature digitale
Model objet du namespace Model objet du namespace CryptographyCryptography
Algorithme TypeAlgorithme Type : (abstract class) : (abstract class)Algorithmes Symétrique et HashAlgorithmes Symétrique et Hash
Algorithme ClassAlgorithme Class : (abstract class) : (abstract class)RC2, SHA1…RC2, SHA1…
Implémentation des « Algorithmes Class »Implémentation des « Algorithmes Class »RC2CryptoServiceProvider, SHA1Managed…RC2CryptoServiceProvider, SHA1Managed…
Grâce a ce « design pattern » il est possible de faire ses propres Grâce a ce « design pattern » il est possible de faire ses propres ajouts/implémentations aux algorithmes aux différents niveaux.ajouts/implémentations aux algorithmes aux différents niveaux.
Les algorithmes symétriques et de hash sont implémentés « stream-Les algorithmes symétriques et de hash sont implémentés « stream-oriented »oriented »
La Configuration CryptographiqueLa Configuration CryptographiquePermet de résoudre les implémentations spécifiques de certains Permet de résoudre les implémentations spécifiques de certains algorithmesalgorithmes
Cryptographie et Framework.NETCryptographie et Framework.NET
DPAPIDPAPI
Data Protection Data Protection APIAPI
API Windows de API Windows de cryptage cryptage décryptagedécryptage
Wrapper .NET 1.0 Wrapper .NET 1.0 et 1.1 nécessaireet 1.1 nécessaire
Accessible dans la Accessible dans la CLR 2.0 : CLR 2.0 :
Crytography Application BlockCrytography Application Block
http://msdn.microsoft.com/library/default.asp?http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/crypto1.aspurl=/library/en-us/dnpag2/html/crypto1.asp
Cryptography Application Block : Cryptography Application Block : Réduit le temps de développement sur le code standard de Réduit le temps de développement sur le code standard de cryptographiecryptographie
Aide à maintenir les bonnes pratiques en terme de Aide à maintenir les bonnes pratiques en terme de cryptographiecryptographie
Apprentissage aisé car le modèle d’architecture est constant Apprentissage aisé car le modèle d’architecture est constant quelque soit les fonctionnalités. quelque soit les fonctionnalités.
Fournis une implémentation standard de l’utilisation des Fournis une implémentation standard de l’utilisation des techniques de cryptographie. techniques de cryptographie.
Code extensible; supportant d’addinitionnelles Code extensible; supportant d’addinitionnelles implémentation et providers de cryptographie.implémentation et providers de cryptographie.
DémonstrationDémonstration 44 CryptageCryptage .NET.NET FrameworkFramework
CryptageCryptage des données des donnéesPAG SecurityPAG Security
DémonstrationDémonstration 44 CryptageCryptage .NET.NET FrameworkFramework
CryptageCryptage des données des donnéesPAG SecurityPAG Security
ProgrammeProgramme
FonctionnalitésFonctionnalités dede sécuritésécurité dede .NET.NET FrameworkFramework
Sécurité basée sur les rôles Sécurité basée sur les rôles
Sécurité d'accès au codeSécurité d'accès au code
CryptographieCryptographie
SQL Server 2005 : quoi de neuf ?SQL Server 2005 : quoi de neuf ?
SQL Server 2005SQL Server 2005
Conférence SQL DAYS 2005Conférence SQL DAYS 2005Paris, le 9 juin 2005Paris, le 9 juin 2005
Marseille, le 14 juin 2005Marseille, le 14 juin 2005
Toulouse, le 16 juin 2005Toulouse, le 16 juin 2005
Une journée gratuiteUne journée gratuite
www.microsoft.com/france/sql/www.microsoft.com/france/sql/sqldays.aspxsqldays.aspx
RésuméRésumé dede lala sessionsession
FonctionnalitésFonctionnalités dede sécuritésécurité dede .NET.NET FrameworkFramework
Sécurité d'accès au codeSécurité d'accès au code
Sécurité basée sur les rôlesSécurité basée sur les rôles
CryptographieCryptographie
SQL Server 2005SQL Server 2005
ÉtapesÉtapes suivantessuivantes
1.1. ÊtreÊtre informéinformé sursur lala sécuritésécurité S'inscrire aux bulletins de sécurité :S'inscrire aux bulletins de sécurité :
http://www.microsoft.com/security/security_bulletins/alerts2.asphttp://www.microsoft.com/security/security_bulletins/alerts2.asp (en anglais)(en anglais)
Obtenir l'aide la plus récente de Microsoft sur la sécurité :Obtenir l'aide la plus récente de Microsoft sur la sécurité :http://www.microsoft.com/france/securite/default.asphttp://www.microsoft.com/france/securite/default.asp
2.2. Obtenir des activités de formation Obtenir des activités de formation supplémentaires sur la sécuritésupplémentaires sur la sécurité1.1. Trouver des séminaires de formation :Trouver des séminaires de formation :
http://www.microsoft.com/france/events/default.asphttp://www.microsoft.com/france/events/default.asp
1.1. Trouver un centre de formation local agréé Microsoft Trouver un centre de formation local agréé Microsoft (CTEC) pour des cours pratiques :(CTEC) pour des cours pratiques :http://www.microsoft.com/france/formation/centres/recherche.asphttp://www.microsoft.com/france/formation/centres/recherche.asp
PourPour plusplus d'informationsd'informations
SiteSite MicrosoftMicrosoft sursur lala sécuritésécurité (tout(tout public)public)http://www.microsoft.com/france/securite/default.ashttp://www.microsoft.com/france/securite/default.aspp
Site MSDN sur la sécurité (développeurs)Site MSDN sur la sécurité (développeurs)http://msdn.microsoft.com/securityhttp://msdn.microsoft.com/security (en anglais) (en anglais)
Site TechNet sur la sécurité (informaticiens)Site TechNet sur la sécurité (informaticiens)http://www.microsoft.com/france/technet/themes/http://www.microsoft.com/france/technet/themes/secursecur/default.asp/default.asp
QuestionsQuestions etet réponsesréponses
Saisie infos
Fabrique de Classe
Validation mot de passe
Chargement des rôles
Affecter les politiques de sécurité
BD
Comment éviter la saisie du mot de passe en claire ?
Affichage des données
Comment faire confiance dans les dlls chargées dynamiquement ?
Comment faire confiance qui appel ma fabrique de classe ?
Sous quelle forme dois-je stocker le mot de passe ?
Sous quelle forme dois-je stocker la chaînes de connexion ?
Top Related