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

Este tópico contém informações sobre ferramentas de segurança recomendada e práticas recomendadas. Usar essas ferramentas e recursos não tornar os aplicativos imunes a ataques, mas ele faz menos probabilidade de ataques bem-sucedidos.

Recursos de segurança do Visual C++

Esta seção aborda os recursos de segurança incorporados ao compilador do Visual C++ e do vinculador.

  • /GS (verificação de segurança de buffer)
    Esta opção de compilador instrui o compilador para inserir o código de detecção de saturação em funções que correm o risco de ser exploradas. Quando for detectada uma saturação, a execução é interrompida. Por padrão, essa opção está ativada.

  • /SafeSEH (a imagem tem manipuladores de exceção segura)
    Esta opção de vinculador instrui o vinculador a incluir na imagem de saída de 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 os manipuladores de exceção legítimos somente são executados. Isso ajuda a impedir a execução de manipuladores de exceção introduzidos por um ataque mal-intencionado em tempo de execução. Por padrão, essa opção é desativada.

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

  • /Analyze (análise de código da empresa)
    Esta opção de compilador ativa a análise de código que relata problemas potenciais de segurança, como saturação do buffer, memória não inicializada, desreferência de ponteiro nulo e vazamentos de memória. Por padrão, essa opção é desativada. See Visão geral análise de código para C / C++ for more information.

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

CRT com segurança avançada

O C Runtime Library (CRT) foi aumentada para incluir versões seguras de funções que representam riscos de segurança. (A seqüência de caracteres strcpy desmarcada copiar função, por exemplo.) As versões mais antigas e não seguras dessas funções agora estão desaprovadas e, portanto, seu uso faz com que os avisos de tempo de compilação. Recomendamos que você use as versões seguras dessas funções CRT em vez de escolher para suprimir avisos de compilação. See Security Enhancements in the CRT for more information.

Biblioteca de SafeInt

The SafeInt LibraryAjuda a evitar estouros de inteiro e de outros erros exploráveis que podem resultar quando o aplicativo realiza operações matemáticas. O SafeInt biblioteca inclui o SafeInt Class, o SafeIntException Classe várias SafeInt Functions.

O SafeInt classe protege contra estouro de inteiros e explorações de divisão por zero. Ele permite que você trate as comparações entre valores de diferentes tipos e fornece duas diretivas de tratamento de erros. A diretiva padrão é para o SafeInt classe lançar um SafeIntException a classe de exceção para o relatório por que não pode ser concluída uma operação matemática. A segunda diretiva é para o SafeInt classe para interromper a execução do programa. Você também pode definir uma diretiva personalizada.

Cada SafeInt função protege uma operação matemática de erro pode ser explorada. Você pode usar dois tipos diferentes de parâmetros sem ter que convertê-los para o mesmo tipo. Use o SafeInt classe para proteger vários operações matemáticas.

Iteradores selecionados

Um iterador checked é um iterador que impõe limites do recipiente. Por padrão, quando um iterador marcado está fora dos limites, ele gera uma exceção e finaliza a execução do programa. Um iterador checked oferece outros níveis de resposta que dependem de valores atribuídos a pré-processador define como _SECURE_SCL_THROWS e _ITERATOR_DEBUG_LEVEL. Por exemplo, em _ITERATOR_DEBUG_LEVEL=2, um iterador checked fornece verificações de correção abrangente no modo de depuração, que são disponibilizados por meio de declarações. See Checked Iterators for more information.

Code Analysis for Managed Code

Análise de código para código gerenciado, também conhecida como FxCop, é uma ferramenta que verifica os assemblies para conformidade com a Microsoft.NET Framework diretrizes de Design. O FxCop analisa o código e metadados em cada assembly para verificar se há defeitos nas seguintes áreas:

  • Design de bibliotecas

  • Localization

  • Convenções de nomenclatura

  • Performance

  • Security

Análise de código para código gerenciado está incluído no Visual Studio Application Lifecycle Managemente também pode ser baixada em https://www.gotdotnet.com/team/fxcop/.

Windows Application Verifier

Disponível como parte do Toolkit de compatibilidade de aplicativo, o Application Verifier (AppVerifier) é uma ferramenta que pode ajudar os desenvolvedores a identificar possíveis aplicativo compatibilidade, segurança e estabilidade, problemas.

O AppVerifier monitora como um aplicativo usa o sistema operacional. Vigia o sistema de arquivos, registro, memória e correções de APIs, enquanto o aplicativo está sendo executado e recomenda o nível de código-fonte para os problemas que ele revela.

O verificador permite que você execute o seguinte procedimento:

  • Testar possíveis erros de compatibilidade de aplicativos, causados por erros comuns de programação.

  • Examine um aplicativo para questões relacionadas à memória.

  • Teste a conformidade de um aplicativo com os requisitos de programas de logotipo atual como, por exemplo, o programa de logotipo do Windows 7 Software e o programa de logotipo do Windows Server 2008 R2.

  • Identifica possíveis problemas de segurança em um aplicativo.

O Toolkit de compatibilidade de aplicativo do Windows está disponível em "Compatibilidade de aplicativo" página com o TechNet site da web.

.Recursos de segurança do NET Framework

Configurando política de segurançaDescreve diretrizes e ferramentas para ajuste.Diretivas de segurança do NET Framework.

Contas de usuário do Windows

Usando contas de usuário Windows que pertencem a para os desenvolvedores de expõe do grupo de administradores e --por extensão, os clientes a riscos de segurança. See Executando como membro do grupo usuários for more information.

Aumentar a segurança usando o controle de conta de usuário no Windows Vista

User Account Control (UAC) is a feature of Windows Vista in which user accounts have limited privileges. For more information, see Como o controle de conta de usuário (UAC) afeta o seu aplicativo.

Consulte também

Referência

System.Security

Conceitos

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

Outros recursos

Securing Applications