? Falhas de segurança no software pode vir em formas mais do que os programadores podem imaginar. Um desses ataques é o estouro de buffer , quando um atacante fornece mais informações do que um programa pode manipular. Em particular, os cenários de programação, como a programação do sistema ou de programação de baixo nível C, buffers de cadeias são vulneráveis à exploração . Certas técnicas de manuseio de string pode ser empregada para evitar esses ataques. Essas técnicas incluem o monitoramento do tamanho das cordas, verificando limites de buffer e usando funções de segurança corda de manuseio . Cordas saturações de buffer
Quando os programadores escrever código para manipular a entrada do usuário textual , que a entrada , muitas vezes se move através de um tampão ou variável. Buffer " superação " ocorre quando o programador não cria um buffer de tamanho suficiente para lidar com a entrada do usuário . A entrada não pára quando o buffer pára. Em vez disso, o programa salva o texto na memória diretamente após o buffer, sobrescrevendo os dados do programa cruciais. Estouros de buffer de Cordas ocorrem mais freqüentemente quando os programadores não marcar a entrada do usuário corretamente.
Verificando Boundaries
A entrada do usuário muitas vezes pode se estender além das fronteiras de uma matriz por causa do mau fronteira verificação . Particularmente em C, onde as seqüências são representadas como matrizes de caracteres , inserir e manipular cadeias nessas matrizes pode se tornar complicado . É possível calcular mal os valores de índice de matriz e substituir locais na memória do lado de fora da matriz. Por sempre incluindo o código que verifica os limites da matriz para garantir que eles não são substituídos , o programador pode limitar o acesso de string para o array.
Usando grandes buffers
linguagens de alto nível , como C # ou Java , o programador pode usar objetos de entrada específicos que contêm grandes buffers. BufferedReader do Java é um bom exemplo disso. O usuário pode criar esse objeto com um grande patife ou ficar com seu grande tamanho do buffer padrão para lidar com a entrada. O objeto , em seguida, lida com o texto no buffer . Em linguagens de baixo nível , como C , o programador provavelmente irá usar arrays de caracteres. Nesse caso , o programador deve garantir que a matriz de caracteres a receber dados permanece grande o suficiente para lidar com qualquer tamanho de dados possíveis.
Use Funções seguros
Quanto a entrada do usuário vai, a linguagem de programação C emprega diferentes funções para várias operações de entrada. Nem todas estas opções são seguras. Por exemplo, a função é não verificar a entrada do usuário em tudo, e vai permitir que qualquer coisa para passar para o programa. A função strcpy não vai realizar nenhuma verificação de limites. Em vez disso, outras funções de segurança devem ser empregadas , como os fgets ou funções strncpy .