Programação c ++: 10 dicas anti-hackers
Video: Anti Hacker + Anti Trojan ExperT + Serial
Conteúdo
- Video: anti hacker + anti trojan expert + serial
- Não faça suposições sobre a entrada do usuário
- Video: general de divisão xitado na ranked l cf al
- Lidar com falhas graciosa
- Manter um log de programa
- Video: a incrível historia de hitler - crossfire al
- Siga um bom processo de desenvolvimento
- Video: a incrível historia do super man - crossfire al
- Implementar bom controle de versão
- Autenticar usuários de forma segura
- Gerenciar sessões remotas
- Ofuscar seu código
- Cadastre seu código com um certificado digital
- Use criptografia segura sempre que necessário
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).
Não faça suposições sobre a entrada do usuário
visão de túnel do programador está tudo bem 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 se perguntar: “Como vai este programa reagir à entrada ilegal?”
Video: General de Divisão Xitado na Ranked l CF AL
Aqui estão algumas das regras para a verificação de entrada:
Não faça suposições sobre o comprimento da entrada.
Não aceite mais entrada do que você tem espaço para em seus buffers de tamanho fixo (ou buffers de tamanho variável usados).
Verifique a gama 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.
Não passe entrada bruta em outro serviço, como um servidor de banco de dados.
E realizar todos os mesmos controlos sobre os valores devolvidos de serviços remotos. O hacker pode não ser 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 deve ser entendido bastante liberal. O programa não precisa farejar para descobrir exatamente por que a função não retornar um endereço razoável. Pode ser que o pedido foi para a maneira demasiado memória devido a entrada razoável. Ou poderia ser que o construtor detectado algum tipo de entrada ilegal.
Não importa. O ponto é que o programa deve restaurar 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.
Video: A Incrível Historia de Hitler - CrossFire AL
Você definitivamente vai querer saber quem foi registrado em seu sistema quando um evento de segurança ocorreu - este é o grupo que está mais em risco de uma perda de segurança e que são mais desconfiados quando se olha para os culpados. Além disso, você vai querer 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 (DEPURAÇÃO, "password legal entrou usuário% s", SUser) -
Este é apenas um exemplo. Cada programa vai precisar de algum tipo de função de log. Se é ou não é 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 documentar requisitos, incluindo requisitos de segurança.
Design Review.
Video: A Incrível Historia do Super Man - CrossFire AL
Aderir a um padrão de codificação.
Submeter-se a unidade de teste.
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 se os requisitos, design, código 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. É natural não se preocupar com a versão 1.1 quando você está sob a arma para obter a versão 1.0 para fora da porta e para as mãos estendidas dos usuários de espera. No entanto, o controle de versão é um tema importante que deve ser abordada mais cedo, porque ele deve ser construído em desenho inicial do programa 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: “Ele faz isso quando eu clico em que” 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á 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. Isso é chamado de armazená-los no Claro e é considerado uma forma muito ruim. É 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ê não precisa se preocupar com ele sendo transformado em uma pessoa diferente. Aplicativos que se comunicam com um servidor remoto não pode 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ê não quer pedir repetidamente o usuário por sua senha apenas para se certificar de que a conexão não tenha sido sequestrado. A solução alternativa é estabelecer e gerenciar uma sessão. Você pode fazer isso por ter o servidor enviar o pedido 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 tomar é certificar-se 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.
Cadastre 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 assim: A empresa 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, essa admoestação tem várias partes. Primeiro, “Usar criptografia sempre que necessário.” Isso tende a trazer à mente pensamentos de comunicar informações bancárias através da Internet, mas você deve pensar mais geral do que isso.
Os dados que está sendo comunicada, quer através da Internet ou sobre 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 armazenados no disco é conhecido como Dados em repouso. Esses dados também devem ser criptografados se há uma chance do disco estar 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 - dados sobre esses dispositivos devem ser criptografados.