Você está na página 1de 3

Unidade Curricular: Gerenciamento de Banco de Dados

Professor(a): Rodrigo Crespi Ano/Semestre: 2019/1 Data: 01/07/2019


Alunos: Juliano Raymundo dos Santos

SQL Injection

Origem

O primeiro indício de sua existência foi publicado no e-zine Phrack #54, de 25 de


Dezembro de 1998. Um bastião da cultura phreaker, fundada em 1985, a
revista/manifesto/site marcou história em diversos momentos, mas naquela edição
em especial ela introduziu o SQL Injection para o mundo. Coube a Jeff Forristal, na
época conhecido pela alcunha Rain Forest Puppy, a dúbia honra de ser o autor do
artigo, com a ajuda de um amigo não identificado.

Injeção de SQL, o que é?

Do inglês SQL Injection é um tipo de ameaça de segurança que se aproveita de


falhas em sistemas que interagem com bases de dados através de comandos SQL,
onde o atacante consegue inserir uma instrução SQL personalizada e indevida
dentro de uma consulta (SQL query) através das entradas de dados de uma
aplicação, como formulários ou URL.

Pode ser feito por 2 métodos: POST ou GET. Tendo como resposta os métodos SQL
Injection Error Based (com códigos de erro) ou SQL Injection Blind (sem códigos de
erros).

Exemplos de SQL Injection

• Contorno da autenticação
Autenticar sem credenciais Nome de usuário: ‘ or’0’=’0
Senha: ‘ or’ “=’
Autenticar somente com usuário Nome de usuário: admin’--
Autenticar com o primeiro usuário da tabela Nome de usuário: ‘ ou 1=1-
Autenticar com usuário fictício Nome de usuário: union select 1,
‘user’, ‘passwd’, 1-
• Destruição de dados
Eliminar uma tabela do banco Nome do usuário: ‘ ; drop table users-
Fechar o banco de dados remotamente Nome de usuário: ‘aaaaaaaaaaaaa’
Senha: ‘;shutdown-

Contra medidas para SQL Injection

O SQL Injection é um dos ataques mais fáceis de evitar. Para que uma
vulnerabilidade exista, o desenvolvedor precisa usar instruções SQL dinâmicas e
concatenar a entrada diretamente com a instrução. Abaixo segue uma lista de
métodos que podem evitar um ataque de Injeção de SQL:

• Utilização de variáveis de ligação (consultas parametrizadas), ou seja, se


suas instruções são estáticas e utilizam apenas variáveis de ligação para
passar diferentes parâmetros para a instrução, não pode haver injeção de
SQL.

• Validação rigorosa de entradas em qualquer entrada do cliente, ou seja,


seguir as boas práticas de programação, restrinja, rejeite e sanitize. Restrinja
sua entrada onde for possível, ex.:( somente permita formatos numéricos para
campos numéricos), rejeite entradas que não se encaixam no padrão e
sanitize onde a restrição não é viável. Ao fazer a sanitização, pense na
possibilidade de validar tipos de dados, comprimento, intervalo e correção do
formato.

• Implemente o tratamento de erro padrão, ou seja, não permita que no caso de


injeção de SQL o SGBD retorne valores das tabelas ou o nome das mesmas,
mas sim um erro genérico do SGBD, de forma que o atacante não fique a par
do conteúdo do banco.

• Confinamento de ODBC, desabilitando o envio de mensagens para os


clientes. Não permita a passagem de instruções SQL normais. Isso garante
que nenhum cliente, e não apenas o aplicativo web, possa executar código
SQL Arbitrário.

• Confinamento da configuração do servidor de banco de dados, especificando


usuários, funções e permissões. Implementação de gatilhos de execução na
camada do SGBD. Desse modo mesmo que alguém consiga entrar no banco
de dados e executar instruções SQL arbitrárias, não poderá fazer nada do
que pretendia, pois os gatilhos não permitirão.

Conclusão

O SQL Injection se tornou o ataque preferido entre hackers de todos os níveis, pelo
fato de ter um grande impacto em organizações vulneráveis, de fácil aplicação e
com retorno praticamente garantido. Também tem sido o ataque mais defendido
justamente pelos mesmos motivos. Contudo não são todos os sites que estão
protegidos contra esse ataque.
Fontes

WIKIPEDIA. Injeção de SQL – Wikipédia a enciclopédia livre. Disponível em:


<https://pt.wikipedia.org/wiki/Inje%C3%A7%C3%A3o_de_SQL>

PHRACK. Phrack Magazine. Disponível em:


<http://phrack.org/issues/54/8.html>

Melo, Sandro – Exploração de Vulnerábilidades em Redes TCP/IP / Sandro Melo 3.


Ed.

McClure, Stuart – Hackers Expostos: Segredos e soluções para segurança de


redes / Stuart McClure 7. Ed.

Você também pode gostar