Artigos de Tecnologia e Negócios > Infraestrutura

SQL Injection

Gabriel Leite
Gabriel Leite

Criei uma situação hipotética de desenvolvimento de faturas para uma nova fintech no artigo de JSON e sugeri a seguinte situação problema: O que acontecerá quando persistir em suas aplicações o nome de uma cliente que, porventura, se chame, digamos, Joana D'arc?

Injeção de SQL na prática

Uma das informações que você precisará cadastrar na fatura a ser paga é o nome da pessoa debitada. Sendo assim, para simplificar, suponham que terá uma string de SQL apenas para cadastrar esse nome.

Algo como INSERT INTO faturas ( nome_completo ) VALUES ( 'Gabriel Leite' ). Agora vejam como ficaria essa mesma instrução se o nome da cliente em questão fosse Joana D'arc: INSERT INTO faturas ( nome_completo ) VALUES ( 'Joana D'arc' ).

Perceba que certamente o banco de dados não vai conseguir interpretar corretamente a parte do VALUES. Na prática, ele vai considerar que as aspas simples após o D da palavra D'arc terminam a string 'Joana D', fazendo com que o trecho arc') fique "solto" na instrução, resultando num erro.

Imagine, agora, que o valor recebido em nome_completo seja algo ataque da peste'); DROP TABLE clientes; DROP TABLE faturas; --. Isso fará com que nossa instrução completa seja INSERT INTO faturas ( nome_completo ) VALUES ( 'ataque da peste' ); DROP TABLE clientes; DROP TABLE faturas; -- ).

Perceba que neste caso foram acrescentadas duas instruções de exclusão das tabelas clientes e faturas. Algo grave e que faria sua empresa ficar sem clientes e sem faturas, praticamente indo a falência.

Este é um tipo de ataque de cibernético muito famoso conhecido como SQL Injection. E é claro, existem diversas variações possíveis para esse tipo de ataque.

Você pode estar pensando: “Ora, nesse caso é fácil de resolver! Basta remover as aspas, os parênteses e os demais caracteres especiais das informações que o usuário nos passar. Aliás, esse processo é chamado de sanitização

A boa notícia é que existem bibliotecas nas principais linguagens que resolvem esta situação. Afinal de contas, se fôssemos resolver este problema utilizando expressões regulares, perderíamos muito tempo e ainda poderíamos não tratar todos os casos.

Normalmente quem faz esse papel de sanitização é o próprio driver de conexão com o BD.

Nada mais justo, uma vez que os drivers são bibliotecas desenvolvidas pelas empresas desenvolvedoras dos sistemas gerenciadores de banco de dados. E com isso resolveremos o "problema da Joana D'arc" bem como evitaremos que strings maliciosas sejam executadas em nosso BD.

Vejamos alguns exemplos:

// NodeJS

const connection = // Cria a conexão com o BD.

const sql = 'INSERT INTO faturas ( nome_completo ) VALUES (?)';
connection.query(sql, ["Joana D'arc"], function (error, results, fields) {
 if (error) throw error;
 // ...
});
// Java

Connection connection = // Cria a conexão com o BD.

String sql = "INSERT INTO faturas ( nome_completo ) VALUES (?)";
PreparedStatemend ps = connection.prepareStatement(sql);
ps.setString(1, "Joana D'arc");

ps.execute();
// PHP

$query = "INSERT INTO faturas ( nome_completo ) VALUES (:nome)";

$statement = $this->con->prepare($query);
$statement->bindValue(":nome","Joana D'arc");

$statement->execute();

Agora é sua vez: mãos à massa!

Estude Segurança web em Java na Alura!

Os cursos de segurança web em java da Alura ensinam as boas práticas para enxergar vulnerabilidades que podem existir em uma aplicação web java e muito mais. Acesse ao primeiro curso clicando aqui e proteja suas aplicações de diferentes ataques e ameaças.

Artigos de Tecnologia e Negócios > Infraestrutura

Cursos profissionais de Infraestrutura é na Alura, comece agora!

  • 1241 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1241 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1241 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1241 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?

Acesso por 1 ano

Estude 24h/dia onde e quando quiser

Novos cursos todas as semanas