O que é SQL?
SQL é uma linguagem de codificação. É usado pelo Database Management Systems (DBMS) para comunicar solicitações de informações de um usuário a um banco de dados e suas tabelas de dados.
[Conheça o Malware Scanner Original o antivírus mais poderoso para seu site ou blog]
Quando você digita uma palavra-chave na barra de pesquisa em um site, por exemplo, uma solicitação SQL é gerada nos bastidores. Esta solicitação contém qualquer palavra-chave que o usuário inseriu, bem como comandos para o DBMS. Isso é então enviado para o banco de dados, onde o DBMS irá decifrá-lo, extrair as informações solicitadas e enviá-las de volta ao usuário.
O processo é o seguinte:
Um cliente procura por uma palavra-chave.
Uma sequência SQL é criada contendo essa palavra-chave.
A sequência SQL é enviada para o banco de dados, onde é lida pelo DBMS.
O DBMS reconhece os comandos de codificação, obrigando-os a invocar os dados solicitados.
As informações relevantes são "devolvidas" ao cliente e aparecem em sua tela.
O que é injeção SQL?
SQL é uma linguagem simples que se baseia em palavras em inglês reconhecíveis para seus comandos de codificação. Se um site não tiver sido devidamente protegido, um hacker pode "injetar" seus próprios comandos de codificação SQL para roubar dados.
Isso envolve enganar um site para criar strings SQL que contenham os comandos do hacker. Quando a sequência é enviada para o banco de dados e interpretada, o DBMS lerá os comandos "injetados" como instruções acionáveis e, em seguida, executá-los. Dessa forma, um hacker pode obrigar o DBMS a devolver informações que o proprietário do site poderia ter mantido em sigilo.
Por exemplo, imagine um cenário em que alguém queira roubar nomes de usuário e senhas de clientes de uma loja online. Se os protocolos de segurança do site não estiverem atualizados, o hacker poderá ir à função de "pesquisa" do site e digitar uma série de comandos de codificação, que seriam automaticamente costurados na sequência SQL resultante.
Exemplo de injeção SQL
Um grande exemplo disso seria o comando DA UNIÃO, que pode ser usado para adicionar "sub-consultas" adicionais à consulta principal do usuário. Essas sub-consultas podem forçar um banco de dados a retornar informações adicionais, juntamente com os resultados legítimos da pesquisa.
Usando esse método, um hacker pode acessar a tabela que contém e-mails, nomes de usuário ou senhas do cliente. A partir de uma injeção inicial de SQL, é um pequeno passo para invadir contas de usuários, roubar informações confidenciais e até mesmo tomar o controle administrativo do próprio site.
O que um hacker SQL pode roubar?
Se o site não foi devidamente protegido, não há realmente limite para a quantidade de dados que um hacker poderia acessar com injeções SQL. Quase tudo localizado no banco de dados é um jogo justo.
Usando comandos de codificação simples, eles podem forçar o banco de dados a retornar uma lista completa de todas as tabelas que ele contém. Isso lhes dá um roteiro para cada subseção do banco de dados para que eles possam solicitar qualquer informação que quiserem.
Como prevenir a injeção de SQL
Segregação de dados
Quanto mais centralizados são seus dados, pior pode ser um ataque SQL. No exemplo da loja online, o hack só é realmente prejudicial porque dados confidenciais do usuário são mantidos no mesmo banco de dados que as tabelas de produtos. A segregação de informações em diferentes bancos de dados mantém o dano potencial ao mínimo.
Declarações preparadas
Uma das melhores estratégias para prevenir a injeção de SQL é a implementação de Declarações Preparadas. Um site de alto risco gerará uma nova consulta SQL toda vez que alguém enviar uma solicitação, dando aos hackers a oportunidade de injetar seu próprio código.
Evite isso programando seu site para usar modelos SQL pré-fabricados, com valores fixos e um ponto de interrogação onde a palavra-chave normalmente apareceria. Seu DBMS pode ser codificado para ler esse ponto de interrogação como qualquer dado na barra de pesquisa, mas a consulta em si é criada com antecedência. Com uma declaração preparada, um hacker não poderá adicionar novos comandos à string.
Validação de entrada
A validação de entrada deve ser incorporada no backend de um site, com uma lista branca de caracteres e palavras aceitos. A lista branca pode ser atualizada sempre que novos itens pesquisáveis forem adicionados ao banco de dados. Se um hacker "pesquisar" um comando de codificação maliciosa, o sistema verificará os dados de entrada em relação à sua lista branca. Quando ele não encontrar uma correspondência de entrada válida, ele não executará o código e apenas retornará uma mensagem "sem resultados".
O Avance Network é uma comunidade fácil de usar que fornece segurança de primeira e não requer muito conhecimento técnico. Com uma conta, você pode proteger sua comunicação e seus dispositivos. O Avance Network não mantém registros de seus dados; portanto, você pode ter certeza de que tudo o que sai do seu dispositivo chega ao outro lado sem inspeção.