Compartilhar via


Práticas recomendadas de segurança para C++

Este artigo contém informações sobre ferramentas e práticas de segurança.Usá-las não faz aplicativos imunes de ataque, mas faz ataques com êxito menos suscetível.

Recursos de segurança do Visual C++

Esses recursos de segurança são compilados no compilador e o vinculador Visual C++:

  • /GS (verificação de segurança de buffer)
    Instrui o compilador para inserir o código de detecção de estouro nas funções que são em risco de ser alvos de ataques.Quando um estouro for detectado, a execução é interrompida.Por padrão, esta opção está ativado.

  • /SafeSEH (imagem tem manipuladores de exceção segura)
    Instrui o vinculador para incluir na imagem de saída uma tabela que contém o endereço de cada manipulador de exceção.Em tempo de execução, o sistema operacional usa esta tabela para certificar-se de que apenas os manipuladores legítimos de exceção são executados.Isso ajuda a evitar a execução de manipuladores de exceção que são apresentados por um ataque mal-intencionado em tempo de execução.Por padrão, essa opção é.

  • / /NXCOMPAT, / /NXCOMPAT (compatível com prevenção de execução de dados)
    Este as opções do compilador e do vinculador permitem a compatibilidade de (DEP) de prevenção de execução de dados.O DEP protege contra o CPU a execução de páginas de sem código.

  • /analyze (Análise do código)
    Esta opção de compilador ativa a análise de código que relata problemas de segurança potenciais como um estouro de buffer, a memória un- inicializada, a remoção de referência do ponteiro zero, e os vazamentos de memória.Por padrão, essa opção é.Para obter mais informações, consulte Análise de código para a visão geral do C/C++..

  • / /DYNAMICBASE (randomização de layout do espaço de endereço de uso)
    Esta opção de vinculador permite que a compilação de uma imagem executável que pode ser carregada em locais diferentes na memória no início de execução.Esta opção também disponibiliza o local de pilha em memória muito menos previsível.

CRT de segurança avançada

A biblioteca em tempo de execução de CRT C () foi gerada para incluir versões seguros das funções que geram a segurança risco- por exemplo, a função não-verificada de impressão de cadeia de caracteres de strcpy .Porque as versões mais antigas, nonsecure dessas funções são substituídas, causam avisos em tempo de compilação.Nós incentivamo-lo usar as versões seguros dessas funções de CRT em vez de suprimir os avisos de compilação.Para obter mais informações, consulte Recursos de segurança no CRT.

Biblioteca de SafeInt

Ajuda deBiblioteca SafeInt impedem os estouros inteiro e outros exploráveis erros que podem ocorrer quando o aplicativo executa operações matemáticas.A biblioteca de SafeInt inclui Classe SafeInt, Classe SafeIntException, e várias SafeInt funções.

A classe de SafeInt protege contra overflow inteiro e partilha- - zero por scripts maliciosos.Você pode usá-lo para manipular comparações entre valores de diferentes tipos.Eu forneço duas diretivas de manipulação de erro.A política padrão é a classe de SafeInt lança uma exceção de classe de SafeIntException para relatar porque uma operação matemática não pode ser concluída.A segunda diretiva é a classe de SafeInt interromper a execução do programa.Você também pode definir uma política personalizado.

Cada função de SafeInt protege uma operação de matemática um erro aproveitável.Você pode usar dois tipos diferentes de parâmetros sem convertê-los para o mesmo tipo.Para proteger várias operações matemáticas, use a classe de SafeInt .

Iteradores verificados

Um iterador verificado impor as fronteiras do contêiner.Por padrão, quando um iterador é verificado para fora dos limites, gera uma exceção de execução e de programa finais.Um iterador verificado fornece outros níveis de resposta que dependem dos valores que são atribuídos ao pré-processador definem como _SECURE_SCL_THROWS e _ITERATOR_DEBUG_LEVEL.Por exemplo, em _ITERATOR_DEBUG_LEVEL=2, um iterador verificado fornece a exatidão abrangente no modo de depuração, que são colocadas disponíveis. usando assertPara obter mais informações, consulte Checked Iterators.

Análise de código para código gerenciado

Falha na análise de código gerenciado, também conhecida como FxCop, assemblies de verificações em conformidade com as diretrizes de design do framework .NET Framework.FxCop analisa o código e os metadados em cada assembly para verificar os defeitos nas seguintes áreas:

  • Projeto de biblioteca

  • Localização

  • Convenções de nomenclatura

  • Desempenho

  • Segurança

Verificação de aplicativo do Windows

O verificador do aplicativo () AppVerifier ajudará a identificar a compatibilidade, estabilidade, e problemas de segurança potenciais do aplicativo.

O AppVerifier monitora como um aplicativo usa o sistema operacional.Examinar o sistema de arquivos, o Registro, a memória, e as APIs quando o aplicativo é executado, e recomendável correções de origem para os problemas que descobre.

Você pode usar o AppVerifier:

  • O teste para erros potenciais de compatibilidade do aplicativo que são causados por programação comuns confunde.

  • Examine um aplicativo para problemas relacionados a memória.

  • Identifica problemas de segurança potenciais em um aplicativo.

O AppVerifier é parte do kit de ferramentas de compatibilidade do aplicativo, que está disponível Compatibilidade de aplicativo no site de TechNet.

recursos de segurança do.NET Framework

Configuring Security Policy descreve diretrizes e ferramentas para ajustar as políticas de segurança do .NET Framework.

Contas de usuário do Windows

Usando as contas de usuário do Windows que pertencem aos administradores e agrupar os desenvolvedores de expõe--pela extensão--clientes a riscos de segurança.Para obter mais informações, consulte Executando como um membro do grupo usuários e Como o controle de conta de usuário (UAC) afeta o aplicativo.

Consulte também

Referência

System.Security

Conceitos

Como o controle de conta de usuário (UAC) afeta o aplicativo

Outros recursos

Segurança na.NET Framework