Академический Документы
Профессиональный Документы
Культура Документы
Baixe o APP
Assine MVP
Guias de Referncia
Cursos & Sries
ltimas Atualizaes
o ltimas Atualizaes
o Voltar
o Front-end web
o Mobile
o Java
o .net
o Banco de dados
o Engenharia de Software
o Delphi
o Canal Mais
DevCast
Artigos
Revistas
o Revistas
o Voltar
o Front-end Magazine
o Mobile magazine
o Java Magazine
o easy Java Magazine
o .net Magazine
o easy .net Magazine
o SQL Magazine
o Clube Delphi
o Infra Magazine
o Engenharia de Software
o Assine revistas
Servios
o Servios
o Voltar
o Cadastre-se
o RSS
o APIs
o RECOMENDADO
Frum
Fale conosco
DevMedia
Iniciar
o Guias de Referncia
o Cursos & Sries
o ltimas atualizaes
Front-end web
Mobile
Java
.net
Banco de dados
Engenharia de Software
Delphi
Canal Mais
o DevCast
Confirmar voto
0
(3) (0)
Por: Clvis Luiz de Amorim Filho, Paulo Diego de Oliveira Bezerra
Cavalcanti, Marcello Benigno de Barros Borges Filho.
1. Introduo
2. SQL Injection
Em um cenrio onde existem informaes armazenadas em bancos de
dados e que podem ser acessados via web, tem-se a possibilidade do
ataque do tipo SQL injection. SQL injection um tipo de ataque muito
simples, que baseia-se na execuo de comandos SQL, sejam comandos de
manipulao de dados - DML (select, insert, update, delete) ou comandos de
definio de dados - DDL (create, drop, alter). Estes comandos so
executados atravs das entradas de formulrios web, ou seja, no local
SELECT * FROM tabela_usuarios WHERE login = '123' AND senha = ' ' or '1' =
'1'
Observe que o comando passado no campo da senha fez com que
independente do login e senha informados, a condio seja sempre
verdadeira, permitindo assim o acesso do usurio aplicao sem o mesmo
possuir a devida permisso.
SQL esperado
Parmetros informados
SQL resultante
Comantrio
SELECT * FROM
tabela_usuarios
WHERE login =
'marcos';--' AND
senha =
'campo_senha'
Se o usurio
j souber o
login (no
caso, login do
usurio
marcos)
ento
consegue
logar sem
senha, j que
os caracteres
Campo_login Campo_senha
SELECT *
FROM
tabela_usuarios
WHERE login =
'campo_login'
AND senha =
'campo_senha'
marcos;--
-- so
comentrios
no SQL
' OR 1=1 --
SELECT * FROM
tabela_usuarios
WHERE login = ''
OR 1=1--' AND
senha =
'campo_senha'
Neste caso,
no
necessrio
saber nem o
login nem a
senha, pois a
condio OR
1=1 sempre
vai ser
satisfeita e
todos os
comandos
posteriores
so
comentados
pelos
carecteres
--
123'; DROP
TABLE
produtos; --
isso foi
passado um
login
qualquer.
Tabela 1 Passagem de parmetros SQL injection
ResultSet rs = stmt.executeQuery(sql);
if (rs.next())
System.out.println("Usurio Logado com sucesso.");
else
System.out.println("Usurio ou Senha no conferem.");
De acordo com a OWASP (2008), uma forma simples do SQL injection
ser evitado, quando utilizada a linguagem JAVA, realizar a validao das
entradas, de forma que sejam evitados caracteres que no faam parte do
conjunto de caracteres das entradas (inputs) e utilizar consultas Prepared
Statement, ou seja, os parmetros no so concatenados, a string SQL
define parmetros:
String sql = "SELECT * FROM tabela_usuarios WHERE login = ? AND senha
= ?";
PreparedStatement prepStmt = con.prepareStatement(sql);
prepStmt.setString(1,login);
prepStmt.setString(2,senha);
ResultSet rs = prepStmt.executeQuery();
Assim, variveis passadas como prepared statement faro o escape
automaticamente, da mesma forma como exposto na linguagem PHP.
5. Consideraes Finais
Sistemas Desktop e Web ainda permanecem como alvos vulnerveis, apesar
da disponibilidade de ferramentas e de procedimentos que dificultam a
ocorrncia de ataques. A fragilidade desses sistemas muitas vezes
potencializada pelo desconhecimento que os programadores possuem
sobre a programao segura e tambm sobre os cenrios nos quais esses
ataques ocorreram e foram bem sucedidos.
Assim, este trabalho apresentou alguns procedimentos que visam
auxiliar a construo de aplicaes seguras sob o ponto de vista dos
ataques provocados pela SQL injection.
6. Referncias Bibligrficas
Assad, Rodrigo. Falhas em aplicaes (Especializao em desenvolvimento
web UNIBRATEC - 2008).
Alves, G. SQL Injection no PHP. Disponvel em: Acesso em 01/04/2008.
Duarte,. L. O..Desenvolvimento de um ambiente para anlise de cdigosfonte com nfase em segurana. So Jos dos Campos: INPE, 2007.
OWASP. Community focused on improving the security of application
software. Disponvel em : Acesso em: 3 maio. 2008.
Publicado no Canal Mais
por Clvis Amorim
Programador apaixonado
Voc precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Confirmar voto
Compartilhe:
Ficou com alguma dvida?
Post aqui sua dvida ou comentrio
Mais posts
Video
BigData - Manipulando arquivos de texto grandes
What is new
Os 10 posts mais legais de Maio
DevCast
Bootstrap ou Materialize?
What is new
Novidade: Gamification DevMedia
E-Book/Apostila
Guia de Referncia DevMedia
Listar mais contedo
Publique | Assine | Fale conosco