Partager via


Meilleures pratiques de sécurité pour C++

Cet article contient des informations sur les outils et les pratiques de sécurité.Leur utilisation de ces derniers ne fait pas de requêtes immunisées de l'attaque, mais elle effectue des attaques réussies moins probable.

Fonctionnalités de sécurité de Visual C++

Ces fonctionnalités de sécurité sont intégrées au compilateur Visual C++ et l'éditeur de liens :

  • /GS (Vérification de la sécurité de la mémoire tampon)
    Demande au compilateur d'insérer le code de détection de débordement dans les fonctions qui sont en danger d'être exploitée.Lorsqu'un débordement est détecté, l'exécution est interrompue.Par défaut, cette option est activée.

  • /SAFESEH (L'image est dotée de gestionnaires d'exceptions sécurisés)
    Demande à l'éditeur de liens à inclure dans l'image de sortie un tableau qui contient l'adresse de chaque gestionnaire d'exceptions.Au moment de l'exécution, le système d'exploitation utilise cette table pour s'assurer que seuls les gestionnaires d'exceptions légitimes sont exécutés.Cela contribue à empêcher l'exécution des gestionnaires d'exceptions qui sont présentés par une attaque malveillante au moment de l'exécution.Par défaut, cette option est désactivée.

  • /NXCOMPAT, /NXCOMPAT (compatible avec la prévention de l'exécution des données)
    Ces options du compilateur et de l'éditeur de liens activent la compatibilité integration (DEP) process Empêchement d'exécution de données.La prévention de l'exécution des données garde le processeur sur l'exécution des pages de non-code.

  • /analyze (analyse de code)
    Cette option du compilateur active l'analyse du code, qui signale les problèmes de sécurité potentiels, tels que le dépassement de mémoire tampon, la mémoire non initialisée, le déréférencement de pointeur null et les fuites de mémoire.Par défaut, cette option est désactivée.Pour plus d'informations, consultez Vue d'ensemble de l'analyse du code C/C++.

  • /DYNAMICBASE (Utiliser la randomisation du format d'espace d'adresse)
    Cette option de l'éditeur de liens active la génération d'une image exécutable qui peut être chargée à différents emplacements de mémoire au début de l'exécution.Cette option rend également l'emplacement de la pile en mémoire beaucoup moins prévisible.

Sécurité CRT améliorée

La bibliothèque Runtime C (CRT) a été augmentée pour inclure les versions sécurisées des fonctions qui produisent la sécurité risque- pour l'exemple, la fonction non contrôlée de copie de chaîne d' strcpy .Étant donné que les versions plus anciennes et non sécurisé de ces fonctions sont déconseillées, elles provoquent des avertissements de compilation.Nous vous encourageons à utiliser les versions sécurisées de ces fonctions CRT plutôt que de supprimer les avertissements de compilation.Pour plus d'informations, consultez Fonctionnalités de sécurité du CRT.

Bibliothèque SafeInt

Les aide deDe bibliothèque SafeInt empêchent le dépassement sur les entiers et d'autres erreurs exploitables pouvant se produire lorsque l'application exécute des opérations mathématiques.La bibliothèque SafeInt inclut la SafeInt, classe, la SafeIntException, classe et plusieurs Fonctions de SafeInt.

La classe SafeInt protège des dépassements d'entiers et des tentatives de division par zéro.Vous pouvez l'utiliser pour gérer des comparaisons entre les valeurs de différents types.I fournit deux stratégies de gestion des erreurs.Dans la stratégie par défaut, la classe SafeInt lève une exception de classe SafeIntException pour indiquer la raison pour laquelle une opération mathématique ne peut pas être exécutée.Dans la deuxième stratégie, la classe SafeInt arrête l'exécution du programme.Vous pouvez également définir une stratégie personnalisée.

Chaque fonction SafeInt protège une opération mathématique d'une erreur exploitable.Vous pouvez utiliser deux types différents de paramètres sans les convertir au même type.Pour protéger plusieurs opérations mathématiques, utilisez la classe d' SafeInt .

Itérateurs vérifiés

Un itérateur vérifié applique les limites du conteneur.Par défaut, lorsqu'un itérateur vérifié est hors limites, il génère une exception et arrête l'exécution du programme.Un itérateur vérifié fournit d'autres niveaux de réponse qui dépendent des valeurs assignées au préprocesseur définissent comme _SECURE_SCL_THROWS et _ITERATOR_DEBUG_LEVEL.Par exemple, l'adresse _ITERATOR_DEBUG_LEVEL=2, un itérateur vérifié fournit l'exactitude complète signe mode débogage, qui deviennent disponibles à l'aide de les assertions.Pour plus d'informations, consultez Itérateurs vérifiés.

Analyse du code managé

L'analyse du code managé, également appelé FxCop, examine les assemblys pour rechercher la conformité avec les règles de conception du.NET framework.FxCop analyse le code et les métadonnées dans chaque assembly pour vérifier les erreurs dans les domaines suivants :

  • Conception des bibliothèques

  • Localisation

  • Conventions d'attribution d'un nom

  • Performances

  • Sécurité

Windows Application Verifier

Application Verifier (AppVerifier) peut vous aider à identifier la compatibilité, la stabilité, et les problèmes de sécurité d'application possible.

L'AppVerifier surveille comment une application utilise le système d'exploitation.Il examine le système de fichiers, le Registre, la mémoire, et les API pendant l'exécution de l'application, et recommande des correctifs de code source pour les problèmes qu'il découvre.

Vous pouvez utiliser l'AppVerifier :

  • Déterminez les erreurs de compatibilité des applications possible qui sont provoquées par des erreurs de programmation courantes.

  • Rechercher dans une application les problèmes liés à la mémoire.

  • Identifier les problèmes de sécurité potentiels d'une application.

L'AppVerifier fait partie d'Application Compatibility Toolkit, qui est en ligne disponible sur Compatibilité des applications le site Web TechNet.

Caractéristiques de sécurité du .NET Framework

Configuring Security Policy fournit des règles et des outils pour ajuster les stratégies de sécurité du. NET Framework.

Comptes utilisateur Windows

L'utilisation de comptes utilisateur Windows appartenant au groupe Administrateurs expose les développeurs et, par extension, les utilisateurs, à des problèmes de sécurité.Pour plus d'informations, consultez Exécution en tant que membre du groupe Utilisateurs et Répercussions du contrôle de compte utilisateur sur votre application.

Voir aussi

Référence

System.Security

Concepts

Répercussions du contrôle de compte utilisateur sur votre application

Autres ressources

Sécurité dans le .NET Framework