Nos últimos meses, tenho lido o código de outros desenvolvedores (especialmente o código PHP), e uma coisa que percebi é que nem todo mundo limpa a entrada.
Este é um dos fatores mais importantes para um aplicativo seguro e bem-sucedido, seja na Web ou não.
Basta verificar se a entrada fornecida é a que você esperava e envolvê-la em uma chamada de função.
Por exemplo:
[código php]
// Este é apenas um exemplo muito curto
$ id = $ _GET [‘id’];
$ query = mysql query (‘SELECT table.field FROM table WHERE id =’. $ GET [‘id’]);
[/ código php]
O exemplo acima causará uma vulnerabilidade de injeção de SQL, pois o invasor pode simplesmente explorar o fato de que você não higienizou nada.
Um melhor exemplo de uma versão higienizada disso seria a seguinte:
[código php]
// Limpe a entrada do usuário
$ id = mysql real escape string ($ GET [‘id’]);
// Verifique se os dados fornecidos são um dígito
if (! Ctype_digit ((string) $ id)) {
return false;
}
// Use sprintf para garantir que o parâmetro fornecido seja um dígito
$ query = sprintf (‘SELECT table.field
FROM table
WHERE id =% d’, $ id);
// Atribuir a consulta a uma variável
$ result = mysql_query ($ query);
// Verifique se a consulta foi executada corretamente
if ($ result) {
// Faça algo
}
[/ código php]
Então, por favor, para o bem de todos os programadores, sempre higienize TODAS as entradas.