Como evitar a injeção de código em c ++

Video: Injeção Eletrônica Honda 150 Flex - Conector serviço SCS ( Caseiro)

A primeira regra de evitar código injetar em programas em C ++ nunca é, sempre, permitir a entrada do usuário a ser processado por um intérprete de linguagem de propósito geral. Um erro comum com injeção SQL é que o programa aceita entrada do usuário como se fosse sempre aceitável e insere-lo em uma consulta SQL que então envia fora para o motor de banco de dados para processamento.

Como exemplo, um programa a pedir a entrada do usuário em uma data poderia ser cortado. A abordagem mais segura e mais user-friendly seria para fornecer ao usuário um gráfico de calendário a partir do qual ele poderia selecionar as datas de início e término. O programa, então, criar uma data com base no que o usuário clicou.

Se isso não for possível, então o programa deve verificar cuidadosamente a entrada para certificar-se de que a entrada era no formato adequado para uma data, neste caso aaaa / mm / dd - por outras palavras, quatro dígitos seguidos por uma barra seguido de dois dígitos e uma barra e, finalmente, mais dois dígitos. Nada mais deve ser considerado de entrada aceitável.

Video: Vídeo aula 1 - DEV C++

Às vezes você não pode ser tão específica sobre o formato. Se você deve permitir que o usuário insira texto flexível, então você pode pelo menos evitar caracteres especiais. Por exemplo, é praticamente impossível fazer a injeção de código SQL sem o uso de qualquer um aspas simples ou duplas.



Não é possível inserir tags HTML sem usar um menor que (lt;) e superior (gt;) sinal. Ou você poderia simplesmente tomar a abordagem que qualquer coisa diferente de texto ASCII não será tolerado:

Video: Como hacer una inyección SQL simple

// verifica `s` alguma corda para se certificar de que é ASCIIsize_type reta off = s.find_first_not_of ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_") -se (off! = String :: npos) {cerr lt; lt; "Errorn"-}

Este código procura a string s para um carácter que não é um dos caracteres de A a Z, A a Z, 0 a 9, ou sublinhado. Se ele encontrar um personagem, então o programa rejeita a entrada.

Video: Ataque de Injeção de Código (Code Injection Attack)

Se você permitir que apenas os caracteres latinos mostrado aqui, o seu pedido não será utilizável em muitos mercados estrangeiros, como aqueles que não usam conjuntos de caracteres Inglês (como árabe, chinês, hebraico ou russo, para citar apenas alguns). Você pode ter que tomar o caminho inverso e basta olhar para os personagens maus.


Publicações relacionadas