Le danger

Définition - Que signifie non sécurisé?

Unsafe est un mot clé du langage de programmation C (C #) utilisé pour désigner une section de code qui n'est pas gérée par le Common Language Runtime (CLR) du .NET Framework ou du code non managé. Unsafe est utilisé dans la déclaration d'un type ou d'un membre ou pour spécifier un code de bloc. Lorsqu'il est utilisé pour spécifier une méthode, le contexte de la méthode entière n'est pas sûr.

Le code non sécurisé offre une bonne interopérabilité avec les interfaces de programmation d'application (API) ou les appels système non gérés et sert d'interface compatible pour les bibliothèques de liens dynamiques (DLL) tierces, qui nécessitent des pointeurs pour le passage de paramètres. Un code non sécurisé peut également être utilisé pendant le débogage, lorsque le contenu du processus nécessite une inspection ou une analyse.

Definir Tech explique Unsafe

Les données non sécurisées font référence aux données de mémoire allouées qui ne sont pas contrôlées par le CLR, telles que les poignées ou les pointeurs de Windows alloués via une nouvelle méthode.

Un code non sécurisé fait référence à une instruction ou à une méthode qui accède à la mémoire non gérée, notamment:

  • Appels aux API Windows
  • Appels aux composants d'interface de méthode COM (Component Object Model) impliquant des structures avec des pointeurs ou du code critique de performances.

Le code non sécurisé est principalement utilisé lorsque les opérations impliquent des pointeurs et, généralement, lorsque le code est exécuté en dehors du contexte géré. La compilation de code unsafe nécessite la spécification de l'option "/ unsafe" avec la commande de compilation.

Dans les environnements entièrement fiables, CLR est requis pour l'exécution de code non sécurisé. Cependant, CLR ne vérifie pas le code non sécurisé. CLR prend en charge le code non sécurisé pour fournir un accès direct au code mémoire non managé, ce qui est parfois préféré pour des raisons de performances.

Étant donné que CLR maintient la sûreté et la sécurité des types, C # ne prend pas en charge l'arithmétique des pointeurs dans le code managé, contrairement à C / C ++. Le mot clé unsafe permet l'utilisation du pointeur dans du code non managé. Cependant, la sécurité n'est pas garantie car des règles strictes d'accès aux objets ne sont pas suivies. Par exemple, les fonctionnalités d'opération de pointeur ne sont pas fournies dans Java Runtime Environment (JRE).

Un code non sécurisé peut créer des problèmes de stabilité et de sécurité, en raison de sa syntaxe complexe inhérente et du potentiel d'erreurs liées à la mémoire, telles que le débordement de pile, l'accès et l'écrasement de la mémoire système. Une attention particulière du développeur est primordiale pour éviter les erreurs potentielles ou les risques de sécurité.

Cette définition a été écrite dans le contexte de C #