Inseguro

Definição - o que significa inseguro?

Unsafe é uma palavra-chave da linguagem de programação C (C #) usada para denotar uma seção de código que não é gerenciada pelo Common Language Runtime (CLR) do .NET Framework ou código não gerenciado. Unsafe é usado na declaração de um tipo ou membro ou para especificar o código do bloco. Quando usado para especificar um método, o contexto de todo o método não é seguro.

O código inseguro fornece boa interoperabilidade com interfaces de programação de aplicativos (API) ou chamadas de sistema não gerenciadas e serve como uma interface compatível para bibliotecas de vínculo dinâmico (DLL) de terceiros, que requerem ponteiros para passagem de parâmetros. O código não seguro também pode ser usado durante a depuração, quando o conteúdo do processo requer inspeção ou análise.

Definirtec explica inseguro

Dados inseguros referem-se a dados de memória alocada que não são controlados pelo CLR, como identificadores ou ponteiros do Windows alocados por meio de um novo método.

O código inseguro se refere a uma instrução ou método que acessa a memória não gerenciada, incluindo:

  • Chamadas para APIs do Windows
  • Chamadas para componentes de interface de método COM (Component Object Model) envolvendo estruturas com ponteiros ou código crítico de desempenho.

O código não seguro é usado principalmente quando as operações envolvem ponteiros e, geralmente, quando o código é executado fora do contexto gerenciado. A compilação de código inseguro requer a especificação da opção "/ unsafe" com o comando de compilação.

Em ambientes totalmente confiáveis, o CLR é necessário para a execução de código não seguro. No entanto, o CLR não verifica o código não seguro. CLR oferece suporte a código não seguro para fornecer acesso direto ao código de memória não gerenciada, que às vezes é preferido por motivos de desempenho.

Como o CLR mantém a segurança do tipo, C # não oferece suporte à aritmética de ponteiro em código gerenciado, ao contrário de C / C ++. A palavra-chave não segura permite o uso do ponteiro em código não gerenciado. No entanto, a segurança não é garantida porque regras estritas de acesso a objetos não são seguidas. Por exemplo, os recursos de operação do ponteiro não são fornecidos no Java Runtime Environment (JRE).

O código inseguro pode criar problemas de estabilidade e segurança, devido à sua sintaxe complexa inerente e ao potencial para erros relacionados à memória, como estouro de pilha, acesso e substituição da memória do sistema. Cuidado extra com o desenvolvedor é fundamental para evitar possíveis erros ou riscos de segurança.

Esta definição foi escrita no contexto de C #