SQL Injection
Nesse blog vamos abordar as principais dúvidas.
SQL Injection (Structured Query Language Injection), injeção de SQL em tradução livre, é um tipo de ataque que pode dar a usuário malicioso controle completo sobre o banco de dados de seu aplicativo em casos extremos, inserindo código SQL arbitrário em uma consulta de banco de dados. Os rankings de vulnerabilidades quase em sua maioria listam esse ataque como crítico oferecendo risco quase irremediável nos casos de exploração com sucesso.
Uma vulnerabilidade de injeção de SQL, como o nome sugere, pode afetar qualquer site ou aplicativo web que use um banco de dados SQL, como MySQL, Oracle, SQL Server entre outros. Este ataque é utilizado para obter acesso não autorizado aos seus dados confidenciais, como: informações do cliente, dados pessoais, segredos comerciais, propriedade intelectual e muito mais. Os ataques de injeção de SQL são uma das vulnerabilidades de aplicativos web mais antigas, prevalentes e perigosas.
Os ataques funcionam nas consultas realizadas ao banco em ambos os métodos de envio de formulário, GET ou POST, através de manipulação dos dados do input, substituindo-os por comandos compatíveis com o banco, que por sua vez, solicita dados para consulta, edita, manipula ou apaga os mesmos, sendo em páginas de login, formulários de comentários, ou qualquer outro campo interagível com o usuário que contenha acesso/consulta ao bando de dados.
Uma boa maneira de evitar danos é restringir o acesso o máximo possível (por exemplo, não se conecte ao banco de dados usando a conta de Administrador ou root). Também é aconselhável ter diferentes bancos de dados para diferentes fins (por exemplo, separar o banco de dados do sistema da loja e o fórum de suporte do seu site).
Os desenvolvedores podem evitar SQL Injection em aplicativos, utilizando consultas de banco de dados parametrizadas, com parâmetros vinculados e digitados, e uso cuidadoso de procedimentos armazenados no banco filtrando caracteres indevidos nas consultas como “>”, “<”, “$”, “+”, “-“, comandos como “OR” ou “!=” , aspas simples ou duplas e outros que demarcam início de um trecho de código ou funções de query, bem como limitar o número de caracteres na entrada, visando não possibilitar que esses trechos de query sejam escritos em BASE64, binário ou hexadecimal por exemplo, se a presença desses seja indispensável, certificar-se de que eles estejam sendo tratados exclusivamente como strings.
Além disso, pode-se tomar outras medidas para minimizar a probabilidade de ataques bem-sucedidos, como por exemplo aplicar scanners, Testes de Vulnerabilidades e Pentests, serviços oferecidos pela Site Defender, em busca de brechas e vulnerabilidades que comprometam a segurança dos dados gravados em banco, possivelmente dados pessoais dos usuários e mantenham a conformidade dos seus sistemas com a LGPD ou qualquer outra política de segurança relacionada.
Realize Testes de Segurança e atue contra as vulnerabilidades.
Fale com a Site Defender, tire suas dúvidas e solicite uma proposta para sua empresa.