Aprimoramentos de segurança no CRT
Foram feitos aprimoramentos significativos para tornar mais segura a CRT.Muitas funções de CRT agora têm versões mais seguras.Se existir uma nova função de segurança, a versão mais antiga e menos segura está marcada sistema autônomo preterido e a nova versão tem o _ssufixo ("seguro").
Observe que nesse contexto, "obsoleto" apenas significa que não é recomendável o uso da função; ele não indica que a função está agendada para ser removido do CRT.
Também observe as funções de seguras não impedir ou corrigir erros de segurança; em vez disso, eles capturar erros quando eles ocorrerem.Eles realizam verificações adicionais para condições de erro e no caso de erro, eles chamar uma rotina de tratamento de erros (consulte Validação de parâmetro).
Por exemplo, a strcpy função não tem como dizer se a seqüência de caracteres que está copiando é muito grande para o buffer de destino. No entanto, sua contraparte seguro, strcpy_s, tem o dimensionar do buffer sistema autônomo um parâmetro, para que ele possa determinar se ocorrerá uma saturação do buffer. Se você usar strcpy_s Para copiar onze caractere em um buffer de dez caractere, que é um erro de sua parte; strcpy_s não é possível corrigir o erro, mas ele pode detectar o erro e informá-lo ao chamar o manipulador de parâmetro inválido.
Eliminação de avisos de substituição
Há várias maneiras de eliminar os avisos de substituição para as funções mais antigas e menos seguros.O mais simples é simplesmente definir _CRT_SECURE_NO_WARNINGS ou use o aviso pragma. Tanto desabilitará os avisos de substituição, mas claro ainda existem as questões de segurança que fez com que os avisos.É muito melhor deixar substituição avisos habilitado e usufruir os novos recursos de segurança do CRT.
No C++, a maneira mais fácil de fazer isso é usar Proteger overloads de modelo, que, em muitos casos, eliminará avisos de substituição, substituindo chamadas a funções preterido com chamadas para as novas versões seguras dessas funções. Por exemplo, considere que isso preterido telefonar strcpy:
char szBuf[10];
strcpy(szBuf, "test"); // warning: deprecated
Definir _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES sistema autônomo 1 elimina o aviso alterando o strcpy telefonar para strcpy_s, que impede que estouros de buffer. Para obter mais informações, consulte Proteger overloads de modelo.
Para essas funções preterido sem modelo seguro sobrecargas, definitivamente, você deve considerar atualizar manualmente o código para usar versões seguras.
Outra fonte de avisos de substituição, não relacionadas à segurança, é funções POSIX.Substituir nomes de função POSIX por seus equivalentes padrão (por exemplo, alterar de acesso to _access), ou desabilitar avisos relacionados a POSIX substituição definindo _CRT_NONSTDC_NO_WARNINGS. Para obter mais informações, consulte Funções de CRT preterido.
Aprimoramentos de segurança
Alguns dos aprimoramentos de segurança incluem:
Parameter Validation.Os parâmetros passados para funções de CRT são validados em ambas as funções de seguras e em versões preexistentes muitas funções.Essas validações incluem:
Verificando NULL valores passados para as funções.
Verificando os valores enumerados para fins de validade.
Verificando se integral valores estão em intervalos válido.
Para obter mais informações, consulte Validação de parâmetro.
Um manipulador para inválido parâmetros também está acessível para o desenvolvedor.Quando uma ocorrência de um parâmetro inválido em vez de declarar e saindo do aplicativo, a CRT oferece uma maneira para verificar esses problemas com o _set_invalid_parameter_handler função.
Sized Buffers.As funções de seguras exigem que o dimensionar do buffer ser passadas para qualquer função que grava em um buffer.Versões seguras confirmam que o buffer é grande o suficiente antes de gravá-lo, ajudando a evitar erros de saturação de buffer perigosos que poderiam permitir executar de códigos mal-intencionados.Essas funções retornam normalmente um errno tipo de código de erro e chamar o manipulador de parâmetro inválido se o dimensionar do buffer for muito pequeno. Funções que ler de buffers de entrada, sistema autônomo gets, tem versões seguras que exigem que você especificar um dimensionar máximo.
Null termination.Algumas funções esquerdas potencialmente não terminados em seqüências têm versões seguras que garantir que as seqüências de caracteres corretamente nula finalizada.
Enhanced error reporting.As funções seguras retornam os códigos de erro com mais informações de erro que estava disponível com as funções preexistentes.sistema autônomo funções de seguras e muitas das funções preexistentes agora conjunto errno e com freqüência retornar uma errno tipo de código, para fornecer melhor o relatório de erros.
Filesystem security.Acesso a arquivos seguro suporte a APIs de E/s no caso padrão de arquivo seguro.
Windows security.Processo seguro APIs reforçar as políticas de segurança e permitem que ACLs seja especificado.
Format string syntax checking.Seqüências de caracteres inválidas agora são detectadas, por exemplo, usando caracteres de campo do tipo incorreto no printf cadeias de caracteres de formato.
A documentação para cada função descreve aprimoramentos de segurança adicionais.
Para obter mais informações, consulte os seguintes artigos no MSDN online:
Dizendo Tchau a um amigo antigo por Michael Howard.