Injeção SQL

O que é injeção de SQL?

Uma Injeção SQL é uma tentativa de um atacante de carregar comandos SQL para um site, a fim de manipular dados no servidor. O objetivo é geralmente roubar dados, destruir dados ou manipular dados para fins de fraude.

O método mais comum é inserir comandos SQL num formulário web. No entanto, há muitas outras formas de injetar SQL num servidor web, como adicionar comandos a um URL, injetá-los num HTTP Post ou inserir comandos num cookie do navegador que é utilizado pelo seu website.

Porque a Injeção de SQL é importante

As Injeções SQL têm estado no topo de todas as listas OWASP Top 10 há mais de 10 anos. Muitas aplicações web utilizam bases de dados para armazenamento e recuperação eficiente de dados. Isto significa que as bases de dados contêm muitos dados importantes e sensíveis, como nomes de utilizador, palavras-passe, datas de nascimento, números de Segurança Social, e mais.

Aplicações web interagem com a camada de base de dados usando consultas SQL. Normalmente, estas consultas são realizadas utilizando entradas na página web — como uma consulta de pesquisa. No entanto, uma aplicação web mal concebida pode aceitar qualquer tipo de consulta SQL numa caixa de entrada destinada apenas a aceitar um tipo específico de dados, por exemplo, o primeiro nome do utilizador. Os atacantes exploram esta falha introduzindo consultas SQL nestas caixas de entrada para, ou recuperar, ou corromper dados armazenados na base de dados.

O que pode fazer

Existem várias técnicas para limitar a capacidade dos atacantes de roubar ou corromper diretamente os seus dados. A maioria das técnicas destina-se a minimizar a capacidade dos utilizadores finais de fornecerem dados ou comandos que possam ser interpretados pelo seu servidor web ou base de dados. É importante notar que esta entrada pode provir de uma variedade de fontes, incluindo submissões de formulários, argumentos de URL e cookies do navegador.

Algumas das técnicas mais comuns de prevenção de injeções SQL estão listadas abaixo.

  • Sanitização. A proteção mais comum é sanitizar todos os dados fornecidos pelo utilizador para remover sequências de caracteres que possam ser executadas como comandos SQL pelo interpretador ou passadas diretamente para uma base de dados SQL. A sanitização geralmente envolve a substituição de comandos executáveis encontrados nos dados do utilizador por caracteres alternativos, não executáveis.
  • Filtragem e validação. Todos os dados fornecidos pelo utilizador devem ser validados, limitando o formato, o comprimento e outros atributos dos inputs permitidos. Ocorrências de comandos SQL ou outro código malicioso devem ser filtradas.
  • Evite parâmetros de URL não seguros. Evite usar argumentos de URL, como num modelo relacional de objetos (ORM), que desencadeiam operações de base de dados. Em vez disso, use uma API segura para todo o acesso à base de dados.
  • Limitar o âmbito dos comandos SQL. Use comandos LIMIT dentro das operações SQL para minimizar a divulgação de dados no caso de uma injeção SQL alcançar a sua base de dados.

Embora técnicas de codificação como as listadas acima sejam importantes, uma codificação cuidadosa não garante proteção. Bibliotecas de software de terceiros, alterações subsequentes de código por outros desenvolvedores e técnicas de ofuscação recentemente descobertas podem deixar o seu site exposto a ataques de injeção SQL. Adicionar uma camada de proteção automatizada com um Web Application Firewall pode garantir que os seus sites e aplicações web permaneçam protegidos.

Como a Barracuda pode ajudar

Barracuda Web Application Firewall protege as suas aplicações e dados contra todos os tipos de ataques de injeção SQL, utilizando modelos de segurança positivos e negativos poderosos. Estes permitem identificar e bloquear ataques de consulta de base de dados tanto tradicionais como ofuscados, garantindo que apenas são aceites as entradas permitidas num dado campo.

Saiba mais

Contacte-nos para saber como proteger a sua organização de SQL Injections juntamente com centenas de outras ameaças. Também pode obter uma avaliação gratuita do Barracuda Web Application Firewall e realizar um teste gratuito de vulnerabilidades do website.