Ir para conteúdo

POWERED BY:

Arquivado

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

~Thiago Lara

Poderíamos criar um tópico fixo sobre isso futuramente.

Recommended Posts

Galera, todos nós sabemos que um dos grandes problemas hoje enfretados por nós é o tal do "SQL INJECTON" muitos falam mas poucos sabem realmente o que é, mas o lugar que eu quero chegar afinal é se possível neste tópico a maior quantidade de idéias e lógicas para termos quem sabe um "sistema quase perfeito".

 

Para quem não sabe sobre SQL INJECTION aqui não é para se explicar sobre e sim defender sobre rs.. mas resumidamente são instruções sql que enviadas ao seu formulário e disparadas contra seu banco de dados pode fazer com que você logue como administrador de um site, apague uma tabela inteira e seus registros etc...

 

Para finalizar vou postar uma função que uso e bastante gente também deve usar, se alguém tiver algo a comentar ou a postar podemos trocar idéias o que acham?

 

Function ValidaInjecao( input )
	lixo = array("'","#","$","%","¨","&","'or'1'='1'","--","insert","drop","delet","xp_","select","*") ' tudo que possa vir de um form e iremos substituir
	campo = lcase(input) ' seto o parametro enviado a função como tudo em minusculo 
	for i = 0 to uBound(lixo)
		campo = replace( campo ,  lixo(i) , "''") ' faço substituições caso necesário
	next
	ValidaInjecao = campo ' retorno o resultado final
end Function

Eu ainda acho que o problema dela é se formos inserir algo no banco de dados venha tudo em minúsculo (por eu usar o LCASE) alguém tem alguma idéia para que eu continue usando a função mas não use o lcase? Sendo assim, teria que adicionar todas as variações das palavras? tipo OR, Or, oR, or ?

Alguém tem alguma idéia?

 

Abraços!

E espero que esse seja um tópico construtivo e de estudos .. Diferente para se tirar dúvidas etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar esta função tb:

 

'****************************************************************************
*****
'******** SQL Injection Filter ***************************************************
'****************************************************************************
*****

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

Cara, dê uma busca aqui mesmo no fórum, temos sempre grandes discussões sobre isso.

 

O básico e funcional é substituir as aspas simples por duas aspas simples e validar cada request pelo tipo de dado que vai no BD usando as funções IsDate e IsNumber. Só fazendo isso já se eliminam uma enorme e quase totalmente a possibilidade de SQLInjection. Não precisa excluir as palavras DELETE, INSERT, DROP TABLE e outras.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tudo oq foi dito pode ser burlado,é claro, sao algumas medidas otimas, mas nao resolvem por completo, pois você pode mandar até um comando de drop table apenas com numeros

 

lembrem-se, "existem mil maneiras de preparar neston, invente uma!"

 

quer resolver o problema de SQL Injection de modo simples:

 

1-crei um usuario e remova todas as permissoes dele, conseda a ela apenas acesso a estoredprocedure, view(apena leitura) e function(se o usuario nao tem acesso as tabelas, nao importa o SQL Injection que ele monte, "nao vao funcionar"

2-configure o sistema para utilizar este usuario

 

com isso, nao vou dizer que você esta totalmente protegido, pois, ja vi casos em que o hack consegue realmente dar no em pingo d agua.

 

estou preparando um artigo sobre isso, logo mais posto aqui

 

 

falow

T+

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.