O que é SQL Injection

Olá, Kangaroozinho, como vai? Neste artigo nós vamos falar sobre o SQL Injection, o que é, como ele funciona, como você pode prevenir que isso aconteça em suas aplicações. Este artigo pode conter informações mais técnicas, por isso, é essencial que leia com atenção.

O que é SQL Injection

Também conhecido como SQLi, o SQL Injection é um tipo de ataque cibernético dos mais antigos, ao mesmo tempo que mais perigosos. Esse ataque visa, geralmente, os dados de uma aplicação, empresa, sistema, etc., e é um dos ataques mais comuns entre usuários maliciosos.

Como funciona:

Esse ataque basicamente acontece quando um usuário malicioso tenta inserir comandos SQL maliciosos em partes específicas do site/aplicação, como por exemplo um campo de login em um site, que é o mais comum. O usuário mal intencionado “força” o sistema a entender e vê-lo como um login válido, quando na verdade ele sequer informou uma senha, etc.

Imagine o seguinte, para que a sua tela de login funcione, é feita uma pesquisa, geralmente em um banco de dados, onde o sistema busca pelos dados informados (normalmente usuário e senha), e se conseguir encontrar e as informações baterem, o login é liberado, pois os dados são compatíveis.

Porém, usuários podem usar essas consultas de uma forma totalmente diferente do que elas foram planejadas, caso o sistema/aplicação não tenha a devida camada de segurança para evitar esse tipo de interação. O exemplo mais usado é quando o usuário mal intencionado digita ' OR '1'='1 em um campo de e-mail ou usuário, e isso pode fazer com que a consulta vire ' ' OR '1'='1'.

Traduzindo: Isso vira uma consulta, onde o sistema entende que, se o resultado do e-mail for vazio OU 1 ser igual a 1, o acesso é liberado. Porém, note que 1 sempre será igual a 1, e é aqui que entra o problema, pois o usuário terá acesso ao sistema, pois um dos requisitos, que note, foi imposto pelo invasor, foi cumprido.

Esse é apenas um exemplo, mas é possivelmente o exemplo mais comum utilizado. Claro que inúmeros outros exemplos de SQL Injection existem, onde esses usuários mal intencionados podem dar vários comandos diferentes em um formulário, tela de login, barra de pesquisa de um site, etc.

Como evitar e prevenir esse tipo de ataque

As boas práticas mais comuns são conhecidas como “Prepared Statements”, que basicamente separam a consulta dos dados informados, impedindo que uma consulta vire um comando dentro do banco de dados. No exemplo que usamos acima, onde o usuário mal intencionado digita ' OR '1'='1, a saída seria algo como: ''' OR ''1''=''1', e isso não é uma pesquisa válida dentro do banco de dados.

Em outras palavras, com as pesquisas e dados separados, se o usuário digita esse comando malicioso, o sistema vai identificar apenas como uma entrada inválida ao invés de retornar um acesso liberado, ou pesquisas internas.

Note que, se você usa o WordPress para construir as suas páginas e posts, ou mesmo o Elementor, você pode ficar tranquilo, pois tanto o WordPress nativamente, como o uso do plugin Elementor já seguem esse tipo de prática como padrão, sendo assim, ao construir uma barra de pesquisa ou painel de login, já é comum que seja usado esse tipo de Prepared Statements justamente para evitar esse tipo de ataque malicioso.

Por outro lado, se você constrói o seu site totalmente do 0, e não usa uma CMS bem consolidada, é essencial que você aplique esse tipo de boa prática para evitar ataques tão comuns. O Prepared Statements é apenas um exemplo de boa prática para evitar o SQL Injection, mas é o mais comum.

Conclusão

Para concluir, segurança é e sempre será um dos tópicos mais importantes em qualquer área, e com o seu site/aplicação não é diferente, por isso, sempre tome bastante cuidado, e siga as práticas mais recomendadas. Mantenha o seu site e plugins atualizados, assim como, se você mesmo faz as suas aplicações, sempre busque pelas medidas de segurança mais atuais para evitar ao máximo brechas que podem se tornar vulnerabilidades, que, por sua vez, podem se tornar invasões.

Se você gostou deste artigo, considere dar uma olhada em outras publicações de nosso time de suporte aqui em nossa base de conhecimento.

Encontrou sua resposta?