Partager via


Meilleures pratiques de sécurité pour C++

Cette rubrique contient des informations sur les outils et les pratiques de sécurité recommandés.L'utilisation de ces ressources et de ces outils n'immunise pas les applications contre les attaques, mais diminue le risque de celles-ci.

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

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

  • /GS (Vérification de la sécurité de la mémoire tampon)
    Indique au compilateur d'insérer le code de détection du débordement dans les fonctions qui courent un risque d'être exploitées.Lorsqu'un débordement est détecté, l'exécution est interrompue.Cette option est activée par défaut.

  • /SAFESEH (L'image est dotée de gestionnaires d'exceptions sécurisés)
    Indique à l'éditeur de liens d'inclure dans l'image de sortie une table qui contient l'adresse de chaque gestionnaire d'exceptions.Pendant 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 de gestionnaires d'exceptions introduits par une attaque malveillante pendant l'exécution.Cette option est désactivée par défaut.

  • /NXCOMPAT , /NXCOMPAT (compatible avec la prévention de l'exécution des données)
    Ces options du compilateur et de l'éditeur de liens permettent la compatibilité avec la prévention de l'exécution des données (PED).PED permet de protéger l'UC contre l'exécution de pages ne contenant pas de 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.Cette option est désactivée par défaut.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 permet de générer une image exécutable pouvant être chargée à des emplacements différents dans la 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é étendue pour inclure des versions sécurisées des fonctions qui posent des risques de sécurité - par exemple, la fonction de copie de chaîne non contrôlée strcpy.Comme les versions les plus anciennes et moins sûres de ces fonctions sont maintenant déconseillées, leur utilisation entraîne des avertissements à la compilation.Nous vous recommandons fortement d'utiliser les versions sécurisées de ces fonctions CRT plutôt que de supprimer ces avertissements de compilation.Pour plus d'informations, consultez Fonctionnalités de sécurité dans le CRT.

Bibliothèque SafeInt

La bibliothèque Bibliothèque SafeInt aide à empêcher le dépassement sur les entiers ainsi que d'autres erreurs exploitables pouvant survenir lorsque l'application exécute des opérations mathématiques.La bibliothèque SafeInt inclut la Classe SafeInt, la classe de SafeIntException et plusieurs Fonctions 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.Cela fournit deux stratégie 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 de paramètres sans devoir les convertir au même type.Utilisez la classe SafeInt pour protéger plusieurs opérations mathématiques.

Itérateurs vérifiés

Un itérateur vérifié met en place des limites pour le 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, en fonction des valeurs assignées aux définitions de préprocesseur telles que _SECURE_SCL_THROWS et _ITERATOR_DEBUG_LEVEL.Par exemple, au niveau _ITERATOR_DEBUG_LEVEL=2, un itérateur vérifié fournit de nombreuses vérifications d'exactitude dans le mode débogage, qui sont accessible via les assertions.Pour plus d'informations, consultez Itérateurs vérifiés.

Analyse du code managé

L'outil d'analyse du code managé, également connu sous le nom de FxCop, est un outil qui vérifie la conformité des assemblys aux règles de conception de Microsoft .NET Framework.FxCop analyse le code et les métadonnées de chaque assembly et recherche des défaillances dans les domaines suivants :

  • Conception des bibliothèques

  • Localisation

  • Conventions d'attribution d'un nom

  • Performances

  • Sécurité

Windows Application Verifier

L'Application Verifier (AppVerifier) peut vous aider à identifier la compatibilité, la stabilité, et les problèmes de sécurité potentiels des applications.

L'AppVerifier surveille comment une application utilise le système d'exploitation.Il observe le système de fichiers, le Registre, la mémoire et les API pendant que l'application est en cours d'exécution, et recommande des solutions pour corriger les problèmes qu'il découvre au niveau du code source.

Vous pouvez utiliser l'AppVerifier pour :

  • Tester les erreurs potentielles de compatibilité des applications, 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 de l''Application Compatibility Toolkit, qui est disponible en ligne sur le site Web TechNet compatibilité des applications.

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

Configuring Security Policy fournit des indications et des outils permettant d'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