C ++ Programação: 10 dicas Anti-Hacker

Como programador C ++, você precisa aprender as coisas que você deve fazer em seu código C ++ para evitar escrever programas que são vulneráveis ​​a hackers. Há também descreve os recursos que podem ser ativados se o seu sistema operacional suporta-los, como o Address Space Layout Randomization (ASLR) e Data Execution Prevention (DEP).

Don # 8242-t fazer suposições sobre a entrada do usuário

Programador # 8242-s visão de túnel é bom durante a fase inicial de desenvolvimento. Em algum momento, no entanto, o programador (ou, melhor ainda, algum outro programador que não tinha nada a ver com o desenvolvimento do código) precisa sentar e esquecer-se sobre o problema imediato. Ela precisa perguntar a si mesma, # 147-Como este programa reagir à entrada ilegal # 148?;

Aqui estão algumas das regras para o controlo de entrada:

  • Não faça suposições sobre o comprimento da entrada.

  • Don # 8242-t aceitar mais entrada do que você tem espaço para em seus buffers de comprimento fixo (ou buffers de tamanho variável usados).

  • Verifique a faixa de cada valor numérico para se certificar de que não faz sentido.

  • Verifique e filtrar caracteres especiais que podem ser usados ​​por um hacker para injetar código.

  • Don # 8242-t passe de entrada em bruto para outro serviço, como um servidor de banco de dados.

E executar todas as mesmas verificações sobre os valores devolvidos de serviços remotos. O hacker pode não estar no lado da entrada, ele pode estar no lado da resposta.

Lidar com falhas graciosa

Seu programa deve responder razoavelmente às falhas que ocorrem dentro do programa. Por exemplo, se a sua chamada para uma função de biblioteca retorna um nullptr, o programa deve detectar isso e fazer algo razoável.

Razoável aqui é para ser entendido de forma justa liberalmente. O programa não precisa farejar para descobrir exatamente por que a função explorou # 8242-t retornar um endereço razoável. Pode ser que o pedido foi para a maneira demasiado de memória devido à entrada razoável. Ou pode ser que o construtor detectado algum tipo de entrada ilegal.

Ele doesn # 8242-t assunto. O ponto é que o programa deve restaurar o seu estado como melhor que pode e configurar para o próximo bit de entrada sem bater ou estruturas de dados existentes corruptoras como o heap.

Manter um log de programa

Criar e manter registros de tempo de execução que permitem alguém para reconstruir o que aconteceu no caso de uma falha de segurança. (Na verdade, isso é tão verdadeiro no caso de qualquer tipo de falha.) Por exemplo, você provavelmente vai querer registrar cada vez que alguém assina dentro ou fora de seu sistema.

Você # 8242-ll definitivamente querem saber quem foi registrado em seu sistema quando um evento de segurança ocorreu - este é o grupo que # 8242-s em maior risco de uma perda de segurança e que são mais desconfiados quando se olha para os culpados. Além disso, você # 8242-ll quer registar quaisquer erros de sistema que incluem a maioria das exceções.

Um programa de produção do mundo real contém um grande número de chamadas que algo parecido com o seguinte:

log (DEBUG, "Usuário% s entrou senha legal", sUser) -

Este é apenas um exemplo. Cada programa vai precisar de algum tipo de função de log. Se é ou não # 8242-S realmente chamado registro() é imaterial.

Siga um bom processo de desenvolvimento

Cada programa deve seguir um bem pensado, processo de desenvolvimento formal. Este processo deve incluir pelo menos os seguintes passos:

  • Coletar e exigências de documentos, incluindo os requisitos de segurança.

  • Design Review.

  • Aderir a um padrão de codificação.

  • Submeter a teste de unidade.

  • Realizar testes de aceitação formais que são baseados nos requisitos originais.

Além disso, análises pelos pares deve ser realizada em pontos-chave para verificar que os requisitos, design, códigos e procedimentos de teste são de alta qualidade e atender aos padrões da empresa.

Implementar bom controle de versão

O controle de versão é uma coisa estranha. -Lhe # 8242-s natural não se preocupar com a versão 1.1 quando você # 8242-re sob a arma para obter a versão 1.0 para fora da porta e para os usuários que esperam # 8242- mãos estendidas. No entanto, o controle de versão é um tema importante que deve ser abordada mais cedo, porque ele deve ser incorporado no projeto inicial do programa # 8242-s e não acrescentada mais tarde.

Um aspecto quase trivial de controle de versão é saber qual a versão do programa, um usuário está usando. Quando um usuário chama e diz: # 147 Ele faz isso quando eu clico em que, # 148- o help desk realmente precisa saber qual versão do programa o usuário está usando. Ele poderia estar descrevendo um problema em sua versão que já # 8242-s foi corrigido na versão atual.

Autenticar usuários de forma segura

A autenticação do usuário deve ser simples: o usuário fornece um nome de conta e uma senha e seu programa procura o nome da conta-se em uma tabela e compara as senhas. Se as senhas coincidirem, o usuário é autenticado. Mas quando se trata de antihacking, nada é tão simples.

Primeiro, nunca armazenar as senhas-se no banco de dados. Isto é chamado de armazená-los em claro e é considerado uma forma muito ruim. -Lhe # 8242-s muito fácil para um hacker para obter as mãos sobre o arquivo de senhas. Em vez disso, salvar off transformar um seguro da senha.

Gerenciar sessões remotas

Você pode fazer certas suposições, quando todo o seu aplicativo é executado em um único computador. Por um lado, uma vez que o utilizador autenticado si mesmo, você don # 8242-t necessidade de se preocupar com ele sendo transformado em uma pessoa diferente. Aplicativos que se comunicam com um servidor remoto pode # 8242-t fazer essa suposição - um hacker que está escutando na linha pode esperar até que o usuário se autenticar e depois sequestrar a sessão.

O que pode o programador de segurança-minded fazer para evitar esta situação? Você don # 8242-t quer repetidamente pedir ao utilizador para a sua palavra-passe apenas para se certificar de que a conexão hasn # 8242-t sido sequestrado. A solução alternativa é criar e gerir um sessão. Você pode fazer isso por ter o servidor enviar o aplicativo remoto um cookie de sessão uma vez que o utilizador autenticado-se com sucesso.

Ofuscar seu código

ofuscação de código é o ato de fazer o executável tão difícil para um hacker de entender quanto possível.

A lógica é simples. O que é mais fácil para um hacker para entender como seu código funciona, mais fácil será para o hacker para descobrir vulnerabilidades.

A única etapa mais fácil que você pode fazer é ter certeza de que você só distribuir uma versão de lançamento do seu programa que não inclui depuração informações símbolo. Quando você cria o arquivo de projeto, certifique-se de selecionar que tanto a depuração e uma versão Release deve ser criado.

Nunca, jamais, distribuir versões do seu aplicativo com informações de símbolos incluídos.

Registe o seu código com um certificado digital

Assinatura de código de obras, gerando um hash seguro do código executável e combinando-o com um certificado emitido por uma autoridade de certificação válida. O processo funciona da seguinte forma: A empresa que cria o programa deve primeiro registar-se com uma das autoridades de certificação.

Uma vez que a autoridade de certificação está convencido de que a minha empresa é uma entidade de software válido, ele emite um certificado. Este é um longo número que qualquer pessoa pode usar para verificar que o titular deste certificado é o famoso My Company de San Antonio.

Use criptografia segura sempre que necessário

Como qualquer bom aviso, esta advertência tem várias partes. Primeiro, # 147-Usar a cifra sempre que necessário. # 148- Isso tende a trazer à mente pensamentos de comunicar informações de conta bancária através da Internet, mas você deve pensar mais geral do que isso.

Dados que # 8242-s ter sido comunicada, seja através da Internet ou através de algum intervalo menor, é conhecido geralmente como Dados em movimento. Dados in Motion devem ser criptografados, a menos que seria de nenhuma utilidade para um hacker.

Os dados guardados no disco é conhecido como Os dados em repouso. Estes dados também deve ser encriptada se existe uma possibilidade de o disco ser perdido, roubado, ou copiado. Empresas rotineiramente criptografar os discos rígidos em seus laptops da empresa no caso de um laptop for roubado no scanner de segurança no aeroporto ou para a esquerda em um táxi em algum lugar.

Pequenos dispositivos de armazenamento portáteis, como pen drives são especialmente suscetíveis a serem perdidos - os dados sobre esses dispositivos devem ser criptografados.

menu