Partilhar via


Usando funções de cadeia de caracteres seguras

Muitos problemas de segurança do sistema são causados por má manipulação de buffer e as saturações de buffer resultantes. A manipulação deficiente do buffer é frequentemente associada a operações de manipulação de cadeia de caracteres. As funções de manipulação de cadeia de caracteres padrão fornecidas pelas bibliotecas de tempo de execução da linguagem C/C++ (strcat, strcpy, sprintfe assim por diante) não impedem a gravação além do final dos buffers.

Dois novos conjuntos de funções de manipulação de cadeia de caracteres, chamados funções de cadeia de caracteres seguras, fornecem processamento adicional para manipulação adequada de buffer em seu código. Essas funções de cadeia de caracteres seguras estão disponíveis no Kit de Driver do Windows (WDK) e para o Microsoft Windows XP SP1 e versões posteriores do Kit de Desenvolvimento de Driver (DDK) e SDK do Windows. Destinam-se a substituir os seus homólogos C/C++ incorporados e rotinas semelhantes fornecidas pelo Windows.

Um conjunto de funções de cadeia de caracteres seguras são para uso em código de modo kernel. Essas funções são prototipadas em um arquivo de cabeçalho chamado Ntstrsafe.h. Esse arquivo de cabeçalho e uma biblioteca associada estão disponíveis no WDK.

O outro conjunto de funções de cadeia de caracteres segura são para uso em aplicativos de modo de usuário. Um arquivo de cabeçalho correspondente, Strsafe.h, contém protótipos para essas funções. Esse arquivo e uma biblioteca associada estão disponíveis no SDK do Windows. Para obter mais informações sobre Strsafe.h, consulte Usando as funções Strsafe.h.

O conjunto de funções de cadeia de caracteres seguras do modo kernel consiste nos seguintes dois subconjuntos:

As funções de cadeia de caracteres seguras do modo kernel fornecem os seguintes recursos:

  • Cada função de cadeia de caracteres segura recebe o tamanho do buffer de destino como entrada. A função pode, portanto, garantir que ele não escreva além do final do buffer.

  • As funções de cadeia de caracteres Unicode e ANSI encerram todas as cadeias de caracteres de saída com um caractere NULL, mesmo que a operação trunce o resultado pretendido.

  • Todas as funções de cadeia de caracteres seguras retornam um valor NTSTATUS, com apenas um código de sucesso possível (STATUS_SUCCESS).

  • A maioria das funções de cadeia de caracteres seguras estão disponíveis em uma versão com contagem de bytes e em uma versão com contagem de caracteres. Por exemplo, RtlStringCbCata concatena duas cadeias de caracteres com contagem de bytes e RtlStringCchCata concatena duas cadeias de caracteres contadas por caracteres.

  • A maioria das funções seguras de manipulação de cadeias de caracteres está disponível em uma versão estendida com sufixo Ex, que fornece funcionalidade adicional. Por exemplo, RtlStringCbCatExa estende a funcionalidade do RtlStringCbCata.

Esta seção inclui os seguintes tópicos:

Resumo de Kernel-Mode funções de cadeia de caracteres seguras

Importando Kernel-Mode funções Safe String