Asp E O Sql Injection
#1
Posted 07/10/2004, 23:37
Alguem poderia me esclarecer melhor sobre o assunto e como evitar esse problema?
#2
Posted 08/10/2004, 00:22
Consiste em quebrar a segurança do seu site, normalmente em autenticações, com caracteres que gerem erros no banco de dados.
Então se eu tenho uma string SQL assim:
strSQL = "SELECT * FROM usuarios WHERE nome = '" & strNome & "' AND senha ='' & strSenha & "
Posso quebrar isso e gerar um erro no banco de dados colocando apenas uma aspa simples ('), dessa forma podendo até executar instruções em lote (batch) e jogar um DELETE onde seria apenas um SELECT acabando com todo o banco de dados.
Existem duas formas básicas de se resolver isso em ASP. Nunca vi SQL Injection em PHP, ele trata os valores de entrada sozinho.
1 - É utilizar um replace nos caracteres chave. Em SQL server temos apenas o ' como problema, portanto um
strSenha = Replace(strSenha, "'", "")
(Troca ' por nada)
deve resolver o problema
Isso é uma forma amadora de se fazer, mas infelizmente 99% dos "profissionais" trabalham dessa forma.
2 - A forma correta de se programar e interagir com o banco de dados seria utilizando o objeto command. Ele cria parametros que "filtram" automaticamente o conteudo que entra nele de acordo com o que você definir evitando qualquer tipo de falha nesse sentido.
Se quiser conhecer um pouco mais sobre o command procure em http://www.devguru.com
Vou tentar escrever um artigo sobre isso. É algo realmente importante porque MUITOS sites ainda tem esse problema.
Abraços
#3
Posted 08/10/2004, 00:50
[url="http://www.upbalada.com/verfotos.asp?CobID=strSQL%20=%20"SELECT%20*%20FROM%20usuarios%20WHERE%20nome%20=%20'"%20&%20strNome%20&%20"'%20AND%20senha%20=''%20&%20strSenha%20&%20""]VEJA AQUI[/url]
clica ai embaixo e depois veja o endereço q eu coloquei... simplesmente fiz dar um errinho... heheheh
mas isso se arruma com tratamentos básicos que não foi usado nesta pagina...
e outra.. o PHP num trata nativamente o ' ... se foi isso que vc falou... por que ja fiz dar erros em algumas coisas em PHP com o uso de aspas simples ou 'or'1'='1' ... sei que deu erro por que quem desenvolveu é amador... mas deu.. hehehe
bem.. esta doi minha contribuição...
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto
#4
Posted 08/10/2004, 01:57
interessante o assunto msm.A Microsoft divulgou há algum tempo um artigo sobre isso. É bem simples.
Consiste em quebrar a segurança do seu site, normalmente em autenticações, com caracteres que gerem erros no banco de dados.
Então se eu tenho uma string SQL assim:
strSQL = "SELECT * FROM usuarios WHERE nome = '" & strNome & "' AND senha ='' & strSenha & "
Posso quebrar isso e gerar um erro no banco de dados colocando apenas uma aspa simples ('), dessa forma podendo até executar instruções em lote (batch) e jogar um DELETE onde seria apenas um SELECT acabando com todo o banco de dados.
Existem duas formas básicas de se resolver isso em ASP. Nunca vi SQL Injection em PHP, ele trata os valores de entrada sozinho.
1 - É utilizar um replace nos caracteres chave. Em SQL server temos apenas o ' como problema, portanto um
strSenha = Replace(strSenha, "'", "")
(Troca ' por nada)
deve resolver o problema
Isso é uma forma amadora de se fazer, mas infelizmente 99% dos "profissionais" trabalham dessa forma.
2 - A forma correta de se programar e interagir com o banco de dados seria utilizando o objeto command. Ele cria parametros que "filtram" automaticamente o conteudo que entra nele de acordo com o que você definir evitando qualquer tipo de falha nesse sentido.
Se quiser conhecer um pouco mais sobre o command procure em http://www.devguru.com
Vou tentar escrever um artigo sobre isso. É algo realmente importante porque MUITOS sites ainda tem esse problema.
Abraços
mano, quando vc criar o artigo, psota aqui tb blz..
t+
---------------------------------------------------------------------------
> BRdesign.NET - Soluções em Websites e Sistemas E-Commerce.
---------------------------------------------------------------------------
> BR-ecommerce - Sua loja virtual na internet! - Apenas R$99,90 mensais (hospedagem inclusa)!
#5
Posted 08/10/2004, 11:18
no topo(a direita) tem um form, no campo login, digitem:
' or '1'='1'--
(condição q sempre será TRUE)
e na senha, digite qualquer coisa... clique ok e pronto!
Vc é o admnistrador do site!
Já mandei e-mail pros administradores do site (inclusive passando uma solução para o problema) e nada... os caras num tão nem aí... vai entender!
PS: Não me responsabilizo pelo q seja feito com estas informações. Este é um conteúdo meramente informativo. Deixo livre para q os admnistradores/moderadores editem o post como acharem melhor.
Acho q no quesito informalidade, os webmasters verdadeiros é q saem perdendo, pois, não é nada dificil encontrar sites com problemas críticos de segurança. Não é só SQL q pode fazer do site um alvo para pessoas mal intencionadas.. em qualquer parte do relacionamento entre o site e o banco que não existir o tratamento adequado (tratamento este que geralmente não acontece) é possível se aproveitar para atrapalhar o funcionamento correto do site...
Façam o teste... no Google, busquem por mural (tipo recados)... vejam quantos sistemas fazer a filtragem de entrada de scripts mal intencionados... o resultado é assustador!
Bem, gostei do tópico e espero q cheguemos a um final feliz algum dia...
flws ....
Edição feita por: Tx.NET, 08/10/2004, 11:24.
-rwxr-xr-- 1 fmaynnard user 9666 nov 28 00:00 hell
> shutdown -h now
#6
Posted 08/10/2004, 20:47
---------------------------------------------------------------------------
> BRdesign.NET - Soluções em Websites e Sistemas E-Commerce.
---------------------------------------------------------------------------
> BR-ecommerce - Sua loja virtual na internet! - Apenas R$99,90 mensais (hospedagem inclusa)!
#7
Posted 09/10/2004, 03:29
Passei a usar tb, mas nem sabia o motivo hehehe
strSenha = Replace(strSenha, "'", "")
Affe... Sempre tem esses espíritos de porcos que ficam querendo arruinar com nosso banco de dados. ( nada contra o Iporto e ao outro tb heheheh, falo do perigo-mor que são esses seres chamados usuarios )
Por isso que eu trato à fundo a validação dos meus formularios, para não esculhambarem com a entrada de dados.
Mas tava por fora desse problema do inection.
Há alguma outra forma de previnir, fora esses replaces?
#8
Posted 09/10/2004, 13:28
então ha muitos tratamentos para serem feitos para num gerar erro nas suas aplicações... como por exemplo, campos de cadastro não poderem ser digitados HTML, querystring com numeros não suportarem letras... trtar as ' simples nas querystrings....
colocar caminhos fora do padrão para o admin, tem muito site na net que o admin é asssim site.com/admin isso embora o cara num saiba a senha... entrando no admin... ja é meio caminho para o cara tentar burlar seu sistema...
bem.. posso estar desviando um pouco do assunto original.. mas isso se trata de segurança.. e acho que deveria ter a opinião de o máximo de pessoas possiveis sobre o assunto...
abraço ai povo...
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto
#9
Posted 14/10/2004, 11:53
o que falta eh divulgar a falha e explicar como e o pq de arruma-la... tipo, pendurar este tópico seria um bom início...
flws...
Edição feita por: Tx.NET, 14/10/2004, 11:57.
-rwxr-xr-- 1 fmaynnard user 9666 nov 28 00:00 hell
> shutdown -h now
#10
Posted 14/10/2004, 12:13
Bom aí vai um Artigo que achei no freecode que dá várias dicas de como se previnir.
www.joomlaminas.org - Grupo de Usuários Joomla! de Minas Gerais
#11
Posted 14/10/2004, 13:43
Bem detalhado. Gostei
#12
Posted 14/10/2004, 14:24
http://forum.wmonlin...showtopic=92287
que qui seis acham?
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto
#13
Posted 14/10/2004, 14:27
Iporto, o seu tópico "Segurança Na Internet, seu site está seguro?" tb é show rapaz... bem completo!
Já pendurou ele?? rs
www.joomlaminas.org - Grupo de Usuários Joomla! de Minas Gerais
#14
Posted 14/10/2004, 14:47
apesar de ser uma coisa básica e boba muita gente ñ sabe.
Ao usar os includes use sempre arquivo.asp e ñ arquivo.inc.
Motivo: como .inc é texto se der erro o IE interpreta como .txt e ele acaba exibindo suas infos.
Imagine um o arquivo conecta.inc (ele se conecta com o SQL Server)
Sabemos q qq coisa de conexao vc coloca o caminho, a senha e outros dados vitais do seu server, caso o inc de erro... Adivinha oq acontece???? Qualquer individo ver todas essas infos, nome do banco, caminho, senha etc...
Os Hackersinhos de Mer.... podem fazer a festa. pois vc entregou de mão beijada seu acesso ao banco e ao host tb.
OUtra dica: Alem de usar senhas loucas como o iporto faou no post dele (http://forum.wmonlin...showtopic=92287) usem senhas de acesse ao serv diferentes da senha do BD...
Espero ter contribuído.
#15
Posted 14/10/2004, 15:01
naum soh em caso de erro.Comtribuíndo com os colegas de forum, + uma dica para os q gostam de usar os famosos includes
apesar de ser uma coisa básica e boba muita gente ñ sabe.
Ao usar os includes use sempre arquivo.asp e ñ arquivo.inc.
Motivo: como .inc é texto se der erro o IE interpreta como .txt e ele acaba exibindo suas infos.
Imagine um o arquivo conecta.inc (ele se conecta com o SQL Server)
Sabemos q qq coisa de conexao vc coloca o caminho, a senha e outros dados vitais do seu server, caso o inc de erro... Adivinha oq acontece???? Qualquer individo ver todas essas infos, nome do banco, caminho, senha etc...
Os Hackersinhos de Mer.... podem fazer a festa. pois vc entregou de mão beijada seu acesso ao banco e ao host tb.
OUtra dica: Alem de usar senhas loucas como o iporto faou no post dele (http://forum.wmonlin...showtopic=92287) usem senhas de acesse ao serv diferentes da senha do BD...
Espero ter contribuído.
ao salvar, vc tem acesso ao endereço dos includes.
flws...
-rwxr-xr-- 1 fmaynnard user 9666 nov 28 00:00 hell
> shutdown -h now
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)