Sql injection

Disponível somente no TrabalhosFeitos
  • Páginas : 18 (4447 palavras )
  • Download(s) : 0
  • Publicado : 5 de dezembro de 2012
Ler documento completo
Amostra do texto
Artigo SQL Magazine 23 - SQL Injection: o que é, por que funciona e como prevenir

Artigo da Revista SQL Magazine - Edição 23.

Share
[pic]
Clique aqui para ler todos os artigos desta edição
SQL Injection: o que é, por que funciona e como prevenir
Cristiano R. Matheus

Segurança sempre foi e será um tema que preocupa todos nós, seja em casa, nas ruas ou no trabalho. Quando falamos desegurança em informática, não existe um só departamento de uma única empresa que não tenha também esta preocupação. Se questionarmos sobre segurança com desenvolvedores e DBAs, a preocupação será maior ainda, pois são justamente estes dois departamentos os principais responsáveis pelas aplicações que as empresas disponibilizam na rede local (intranet), ou global (internet). São vários os objetosdessa preocupação, mas existe um tema relativamente antigo, desconhecidos por muitos, mas com potencial devastador quando explorado: o SQL Injection, que será o assunto dessa matéria.

Plataforma utilizada
O SQL Injection é uma técnica de ataque baseada na manipulação do código SQL, que é a linguagem utilizada para troca de informações entre aplicativos e bancos de dados relacionais. Como amaioria dos fabricantes de software utiliza o padrão SQL-92 ANSI (ver Nota 1) na escrita do código SQL, os problemas e as falhas de segurança aqui apresentadas se aplicam a todo ambiente que faz uso desse padrão para troca de informações - o que inclui, por exemplo, servidores Oracle. Nesse artigo foram utilizados servidores da plataforma Microsoft: Internet Information Server, Active Server Pages eMicrosoft SQL Server.

Nota 1. ANSI
O American National Standards Institute (ANSI) é uma organização sem fins lucrativos cuja finalidade é criar padrões de aceitação internacional sobre um determinado assunto.

SQL Injection: O que é e por que funciona
SQL Injection é uma classe de ataque onde o invasor pode inserir ou manipular consultas criadas pela aplicação, que são enviadas diretamentepara o banco de dados relacional.
Por que o SQL Injection funciona?
• Por que a aplicação aceita dados arbitrários fornecidos pelo usuário (“confia” no texto digitado);
• As conexões são feitas no contexto de um usuário com privilégios altos.

Para entendermos um pouco melhor o que é SQL Injection e por que funciona, vamos analisar exemplos práticos.

Ataques pelatela de logon
A técnica mais simples de ataque que explora SQL Injection é a que “engana” o formulário login de uma aplicação. Suponha que uma determinada aplicação web faça uso do código exibido na Listagem 1, em que o usuário digita seu nome e senha.


Listagem 1. Código de um formulário de uma aplicação web onde o usuário digita nome e senha.
[pic]

A Figura 1 ilustra como este formulárioé exibido para o usuário

[pic]

Figura 1. Tela de Login onde o usuário digita nome (Username) e senha (Password).



O código presente na Listagem 2 mostra como a informação digitada pelo usuário será processada na aplicação web.

Listagem 2. Código de validação de usuário e senha
[pic]

Ao digitar o nome e senha (ver Figura 1), a aplicação web dispara uma consulta na tabela “USERS”para confirmação do cadastro do usuário. Se um registro for encontrado, o username será retornado e esta é a confirmação de que o usuário foi autenticado com sucesso. Se a consulta na tabela “USERS” não retornar registros, o usuário não será autenticado.
O principal problema do código da Listagem 2 é o trecho responsável pela montagem do comando sql que será executado (ver Listagem 3).Listagem 3. Código que concatena o comando sql a ser executado
var sql = "select * from users where username = '" + username + "' and password = '" + password + "'";

Este código é problemático porque não realiza nenhum tipo de validação nos dados que foram digitados pelo usuário. Isso permite que um usuário mal intencionado, que conheça somente o nome de um usuário válido, consiga “burlar” a...
tracking img