Promoção de primavera: Usufrua de 3 meses gratuitos de alojamento e até 90% de desconto em domínios.**

Comprar agora
.com
$ 5.99 $ 26.99 /1º ano
.one
$ 1.99 $ 16.99 /1º ano

Entrar

Painel De Controlo Webmail Editor web Loja virtual File Manager WordPress

O que é SQL injection?

Leia os nossos exemplos de injeção SQL para compreender como funcionam os ataques SQL

A SQL injection é uma vulnerabilidade de segurança na web que permite ataques. Um ataque de injeção SQL permite a um hacker ver dados aos quais não tem acesso ou que não é capaz de deitar a mão. Os dados são sensíveis, pois podem ser dados pertencentes a utilizadores ou dados a que a aplicação possa aceder. 

O que é que o hacker quer com os dados? Normalmente, o hacker elimina os dados da aplicação web ou altera-os completamente para causar problemas e alterar o comportamento. 

Em alguns casos, o atacante irá executar um ataque de SQL injection no servidor da aplicação web para comprometer a sua função. 

Qual é o impacto de um ataque de SQL injection?

Muitas empresas são prejudicadas por ataques de injeção de SQL, mesmo grandes empresas. Se a sua empresa for vítima de um ataque de SQL injection, é evidente que terá um impacto negativo no seu negócio. A sua empresa perderá informação privada dos utilizadores, entre outras coisas, e isso é terrível para a reputação da sua empresa. Além disso, é ilegal perder este tipo de informação devido à lei de proteção de dados. Por conseguinte, é essencial tomar medidas preventivas para evitar um ataque.

Exemplo de um ataque de SQL injection

Um exemplo de um ataque pode ser algo neste sentido. Digamos que tem um site de comércio eletrónico. Tem uma categoria dedicada à venda de sapatilhas. Um utilizador está interessado em comprar sapatilhas, pelo que visita essa categoria no seu site. Quando o utilizador clica na categoria, o seu navegador irá solicitar:

https://fake-website.com/products?catgory=Sneakers.

A sua aplicação web fará uma consulta SQL a fim de receber detalhes de informações relevantes sobre essa categoria a partir da base de dados. 

A consulta SQL será muito provavelmente lida como:

Select * FROM products WHERE category = ‘Sneakers’ AND released = 1

Neste momento, a consulta SQL está a pedir à base de dados para devolver detalhes da categoria de produtos que tem, especificamente, a categoria das suas sapatilhas 

Released = 1 é uma restrição. Está lá 1 para esconder produtos que ainda não foram lançados. Por exemplo, tem outras variações de sapatilhas que pretende lançar mais abaixo. O 1 vai garantir que não estão disponíveis ao público. 

A sua aplicação web poderá não ter qualquer forma de se proteger de um ataque de SQL injection. Assim, um atacante pode, infelizmente, atacar de uma forma como esta:

https://fake-website.com/products?catgory=Sneakers’–

Isto resultará numa consulta SQL que se assemelha a esta: 

Select * FROM products WHERE category = ‘Sneakers’–‘ AND released = 1

A sequência de traço duplo é um indicador de comentário que indica que a consulta é um comentário. E se o sistema acredita que a consulta é um comentário, não pode saber que se trata de um ataque. Subsequentemente, o traço duplo removerá o resto da consulta (AND released = 1), o que, em troca, libertará informações sobre todos os seus produtos na sua categoria. Mesmo aqueles que ainda não tenham sido divulgados ao público. 

Além disso, o atacante pode enviar ataques SQL para ver tudo o resto que vende no seu site, todos os seus outros artigos noutras categorias. 

O atacante irá atacar pensando desta forma:

https://fake-website.com/products?catgory=Sneakers’+OR+1=1–

Isto resultará numa consulta SQL que se assemelha a esta: 

Select * FROM products WHERE category = ‘Sneakers’ OR 1=1–’ AND released = 1

O envio desta consulta irá devolver informação sobre todos os itens do seu site.

Há muitas outras formas de um atacante poder realizar um ataque por injeção de SQL. Vamos abordá-las brevemente. 

  • Boolean

O atacante enviará uma consulta SQL para devolver rapidamente um resultado da base de dados. Utilizando este método booleano, o atacante pode determinar se o resultado devolvido foi verdadeiro ou falso. 

  • Atraso temporal

O atacante envia uma consulta para fazer a base de dados esperar, isso vai criar um atraso de tempo. Usando este método, o atacante saberá se a consulta que enviou foi verdadeira ou falsa com base no tempo que a base de dados leva para responder. 

  • Fora da rede

O atacante pode realizar um ataque fora da banda se o servidor que a base de dados utiliza tiver certas funcionalidades necessárias. O atacante retira os dados através do canal fora da banda e coloca-os noutro lugar. Este tipo de ataque conta com o servidor para criar um pedido DNS ou HTTP para transferir os dados privados para o atacante. 

Ataque de SQL injection

Os ataques de injeção de SQL mais comuns estão na cláusula de onde de uma consulta selecionada. No entanto, também pode acontecer dentro de diferentes tipos de consultas. Pode ser em declarações de atualização, inserir declarações, selecionar declarações, e ordenar por cláusula. 

Como prevenir um ataque de SQL injection? 

Pode tomar medidas hoje! A maioria das vulnerabilidades da injeção de SQL podem ser encontradas rapidamente. 

  • Scanner

Use o scanner de vulnerabilidades da web Burp. Pode utilizar este scanner, configurando testes contra todos os pontos de entrada na aplicação. 

Pode procurar por erros, diferenças sistemáticas, e as respostas da aplicação que recebe.  

  • Validação de entrada e WAF

Escrever um código que possa identificar os utilizadores ilegítimos. No entanto, este não é um método à prova de bala quando usado sozinho. Pode criar uma série de falsos positivos. A implementação deste método, ao mesmo tempo que se utiliza uma firewall de aplicação web, pode ser eficaz. O WAF irá filtrar SQLI e outras ameaças online. 

Quando o WAF receber a dica de um utilizador ilegítimo, verificará primeiro os dados IP antes de bloquear o pedido. Assim, se os dados IP tiverem uma má reputação, serão bloqueados com base nisso.

Fique a salvo!