Rede de Computadores
Análise do SQL Injection e códigos mal-intencionados de acesso à bancos de dados
O SQL Injection (ou injeção SQL) é uma prática muito utilizada por invasores que desejam recuperar informações de bancos de dados ou mesmo realizar operações criminosas com tabelas de bancos de dados. Na verdade, através do SQL Injection, invasores podem até mesmo destruir todo o seu banco de dados, simplesmente por “dropar” suas tabelas. Scripts de acesso podem ser inseridos em aplicações que fazer comunicação com o banco de dados, se estas aplicações não tratarem as informações corretamente antes de passar os parâmetros de intrução SQL para as intruções de conexão com o banco. Um exemplo claro de tal prática é o código de acesso a seguir:
' or 1 = ' 1
Tal instrução “quebra” a sequência benigna da string de consulta e a modifica de tal forma a fornecer um novo parâmetro que retorna dados totalmente diferentes dos solicitados inicialmente pelo programador de forma benigna. Na prática, é como inserir uma outra condição de um OR, indicando que uma query antes não existente será executada.
Por exemplo:
Na string SQL string sqlstring = “Select * from client where name = ‘“+name+”’”;
Caso um invasor adicione ao campo name, ao invés de um nome para consulta como parâmetro, a instrução ‘nome’ or 1=1 -- ; ele provocará a modificação da string SQL com uma injeção de uma intrução mal intencionada que resultará em:
string sqlstring = “Select * from client where name = ‘nome’ or 1=1 -- ;
A nova instrução gerada passa a realizar uma consulta não somente do parâmetro nome, informado pela aplicação, mas também de toda linha existente na tabela client, fornecendo assim ao invasor uma visão geral da tabela. Levando em consideração um banco de dados com tabelas de dados confidenciais de clientes, como por exemplo bancos de dados bancários, o invasor teria total acesso a todo o acervo que ele sempre desejou. É importante salientar que o “--” ao final da