Inseguro

Definición - ¿Qué significa inseguro?

Inseguro es una palabra clave del lenguaje de programación C (C #) que se usa para indicar una sección de código que no está administrada por Common Language Runtime (CLR) de .NET Framework, o código no administrado. Inseguro se utiliza en la declaración de un tipo o miembro o para especificar un código de bloque. Cuando se usa para especificar un método, el contexto de todo el método no es seguro.

El código inseguro proporciona una buena interoperabilidad con interfaces de programación de aplicaciones (API) no administradas o llamadas al sistema y sirve como una interfaz compatible para bibliotecas de vínculos dinámicos (DLL) de terceros, que requieren punteros para el paso de parámetros. El código inseguro también se puede utilizar durante la depuración, cuando el contenido del proceso requiere inspección o análisis.

Techinfo explica Inseguro

Los datos no seguros se refieren a los datos de memoria asignados que no están controlados por CLR, como los identificadores o punteros de Windows asignados mediante un nuevo método.

El código inseguro se refiere a una declaración o método que accede a la memoria no administrada, que incluye:

  • Llamadas a las API de Windows
  • Llamadas a componentes de la interfaz del método del modelo de objetos componentes (COM) que involucran estructuras con punteros o código crítico para el rendimiento.

El código no seguro se usa principalmente cuando las operaciones involucran punteros y, generalmente, cuando el código se ejecuta fuera del contexto administrado. La compilación de código inseguro requiere la especificación de la opción "/ inseguro" con el comando de compilación.

En entornos de plena confianza, se requiere CLR para la ejecución de código inseguro. Sin embargo, CLR no verifica el código inseguro. CLR admite código inseguro para proporcionar acceso directo a código de memoria no administrado, que a veces se prefiere por razones de rendimiento.

Debido a que CLR mantiene la seguridad de los tipos, C # no admite aritmética de punteros en código administrado, a diferencia de C / C ++. La palabra clave insegura permite el uso de punteros en código no administrado. Sin embargo, la seguridad no está garantizada porque no se siguen reglas estrictas de acceso a objetos. Por ejemplo, las capacidades de operación de puntero no se proporcionan en Java Runtime Environment (JRE).

El código inseguro puede crear problemas con la estabilidad y la seguridad, debido a su sintaxis compleja inherente y la posibilidad de errores relacionados con la memoria, como desbordamiento de pila, acceso y sobrescritura de la memoria del sistema. El cuidado adicional del desarrollador es fundamental para evitar posibles errores o riesgos de seguridad.

Esta definición se escribió en el contexto de C #