Como resolver ataques em Banco de Dados do tipo SQL Injection

ataques-banco-de-dados-injeção-SQL

Se você ainda não se convenceu de que deve utilizar um programa de criação e edição de códigos na confecção de seu site – ou alguma outra forma de proteger seu site -, esta descrição abaixo sobre os tipos de ataques SQL Injection, talvez, possa lhe fazer mudar de ideia.

Antes de mais nada, saiba que ataques do tipo SQL Injection são feitos por crackers em banco de dados de websites, para, manipular, excluir, bloquear ou copiar (roubar) seus dados. Veja algumas das várias instruções de ataques SQL e suas definições.

SELECT id, nome, sobrenome FROM autores;

É fácil concluir o que significa essa instrução; por meio da tabela autores, a instrução retornará cada linha das colunas que possuem como id nome e sobrenome. Claro que, para ter eficiência na busca dos dados, a instrução pode restringir a busca a um autor com nome e sobrenome especifico, conforme a linha abaixo:

SELECT id, nome, sobrenome FROM autores WHERE nome = ‘chico’ AND sobrenome = ‘buarque’

O que dá para se notar de mais importante nesta instrução? As strings chico’ e ‘buarque’ são delimitadas com aspas simples. A introdução de alguma outra aspa nesses valores pode causar algum problema. Suponhamos que a aspa seja inserida em chico, ficando assim:

Nome: Chi’co
Sobrenome: Buarque

A query SQL que será levada ao servidor para fazer a consulta ficará com uma anomalia:

SELECT id, nome, sobrenome FROM autores WHERE nome = ‘chi’co’ AND sobrenome = ‘buarque’

Nesse caso, a consulta, ou query, vai retornar algum erro, como pode-se observar abaixo:

* Server: Msg 170, Level 15, State 1, Line 1
* Line 1: Incorrect Syntax near ‘co’.

O motivo é que a delimitação das aspas originais da query foi quebrada. Se não houver tratamento adequado, o usuário receberá erros, mas pode tambem introduzir códigos maliciosos. Suponha que o nome inserido seja assim:

chi’; DROP TABLE autores –

Nesse caso, a tabela autores poderá ser deletada. Seria um prejuízo e talvez um desastre para o site que o desenvolvedor administra contando o bom funcionamento das tabelas e dos bancos de dados relacionais.

Observe, abaixo, mais formas de burlar o site, em um site com usuário e senha por exemplo. Se o usuário inserir:

Username: admin’ –

O atacante pode acabar se logando como qualquer usuário, sabendo o nome do usuário.

Username:  ‘ or 1=1-

Usando a linha acima, o fraudador pode se logar como o primeiro usuário da tabela de usuários de um site.

Username: ‘ union select 1, ‘fictional_user’, ‘some_password’, 1-

E, mais estranho ainda, a pessoa que entende de SQL Injection pode se logar como um usuário completamente fictício.

Claro que tudo isso depende do formato de seu banco de dados, mas a proteção de um software especializado em desenvolvimento de websites é o melhor remédio para evitar problemas desse tipo.

0 Comentários:

Postar um comentário

- Comente, é sempre bom saber sua opinião.
- Comentários ofensivos ou mal educados não serão publicados.
- Comentários anônimos serão publicados se relevantes.
- Para criticar, sugerir ou elogiar, vá aqui.