Ir para conteúdo

POWERED BY:

Arquivado

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

Rafael Leal

Função Contra SQL INjection

Recommended Posts

Falaaa Rafael...

O pessoal faz alguns post falando disso e normalmente fazem um tratamento grande para os erros, o que eu acho ótimo.

Mas eu irei te passar uma opção simples e até hoje funciona...

 

Vuser = Replace(request.form("usuario"),chr(39),"''")
 Vuser = replace(Vuser,"'","''")
 Vuser = replace(Vuser,"#","''")
 Vuser = replace(Vuser,"$","''")
 Vuser = replace(Vuser,"%","''")
 Vuser = replace(Vuser,"¨","''")
 Vuser = replace(Vuser,"&","''")
 Vuser = replace(Vuser,"'or'1'='1'","''")
 Vuser = replace(Vuser,"--","''")
 Vuser = replace(Vuser,"insert","''")
 Vuser = replace(Vuser,"drop","''")
 Vuser = replace(Vuser,"delet","''")
 Vuser = replace(Vuser,"xp_","''")
 Vuser = replace(Vuser,"select","''")
 Vuser = replace(Vuser,"*","''")
 
 Vpass = Replace(request.form("senha"),chr(39),"''")
 Vpass = replace(Vpass,"'","''")
 Vpass = replace(Vpass,"#","''")
 Vpass = replace(Vpass,"$","''")
 Vpass = replace(Vpass,"%","''")
 Vpass = replace(Vpass,"¨","''")
 Vpass = replace(Vpass,"&","''")
 Vpass = replace(Vpass,"'or'1'='1'","''")
 Vpass = replace(Vpass,"--","''")
 Vpass = replace(Vpass,"insert","''")
 Vpass = replace(Vpass,"drop","''")
 Vpass = replace(Vpass,"delet","''")
 Vpass = replace(Vpass,"xp_","''")
 Vpass = replace(Vpass,"select","''")
 Vpass = replace(Vpass,"*","''")

Assim fazendo só REPLACE fica mais fácil de entender.

 

Espero que ajude.

 

Abraçooooo

Gutoo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta é uma maneira muito rápida proteger seu sql injection. atraves do uso da submissão do formulário e antes que eu conectar às bases de dados.

 

 

 

<%
response.Buffer = True

for each item in request.form
if Trim(Lcase(Instr(request.form(item),"*")))or Trim(Lcase(Instr(request.form(item),"'"))) or Trim(Lcase(Instr(request.form(item),";"))) or Trim(Lcase(Instr(request.form(item),"select"))) or Trim(Lcase(Instr(request.form(item),"sys"))) or Trim(Lcase(Instr(request.form(item),"exec"))) or Trim(Lcase(Instr(request.form(item),"delete"))) or Trim(Lcase(Instr(request.form(item),"update"))) or Trim(Lcase(Instr(request.form(item),"insert"))) or Trim(Lcase(Instr(request.form(item),"\"))) THEN
response.write"<BR>HOUVE UM ERRO DE PROCESSAMENTO NO FORMULÁRIO <br><a href='java script:history.go(-1)'>Voltar para editar o form</a>"
'PARAR DE PROCESSAR O FORMULÁRIO E EMITIR A MENSAGEM DE ERRO ACIMA. VOCÊ PODE CUSTOMIZE ESTA ÁREA 
response.End()
else
End if
next
Response.write"SEU FORMULÁRIO FOI SUBMETIDO COM SUCESSO!"
'continuar executando seu formulário e INSERT/UPDATE na base de dados %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só é necessario remover o aspas simples, de resto nada é necessario.

Só ocorre injection com a obstrução da query.

 

function limpa(str)

str = replace(str,"'","")

end function

 

o trim não vai resolver, mas é bom usar na função tbm para remover espaços no final e no inicio

 

 

function limpa(str)

str = replace(str,"'","")

str = trim(str)

end function

 

O unico problema vai ser quando a string for null retornará erro.

 

Não precisa excluir todos esses valores.

Só o aspas simples '

 

chama a função

 

limpa("As' águas daq'ui não são tão 'claras como as de lá")

Retorno: As águas daqui não são tão claras como as de lá

 

limpa("As águas daqui não são tão claras como as de lá '; Delete from tab_usuarios;---")

Retorno: As águas daqui não são tão claras como as de lá; Delete from tab_usuarios;---

 

Simples, virou string!

 

(Isso para DB MSSQL)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta é uma maneira muito rápida para proteger o seu asp e suas bases de dados sql de SQL INjection

de personagens comuns e frases.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este tem múltiplas funções para verificação de entrada.

<%

function EncSpecChar(ltext) '__________OUTPUT FILTER
dim I
dim lNewText
for I=1 to len(ltext)

	if instr("abcdefghijklmnopqrstuvwxyz0123456789",lcase(mid(ltext,I,1)))<1 then
	lNewText=lNewText & "" & asc(mid(ltext,I,1)) & ";"
	else
	lNewText=lNewText & mid(ltext,I,1)
	end if
next 
EncSpecChar=lNewText
end function
%>

<%
Function SqlInjCheck(lallowed,ltext,extrachars)
dim alchars
dim I
'lallowed: 0=AlphaNumeric	1=Alpha		2=Numeric
'
alchars=extrachars 
select case lallowed
	case 0
		alchars=alchars & "abcdefghijklmnopqrstuvwxyz0123456789"
	case 1
		alchars=alchars & "abcdefghijklmnopqrstuvwxyz"
	case 2
		alchars=alchars & "0123456789"
end select

for I = 1 to len(ltext)
	if instr(alchars,lcase(mid(ltext,I,1)))=0 then
	SqjInjCheck=0
	exit function
	end if
next 
SqlInjCheck=1
end function
%>

<%
function rnumber(nlower,nupper)
randomize
rnumber=int(rnd*nupper)+nlower
end function
%>

<%
function genhsess
dim I
dim stemp

for I = 0 to rnumber(10,16)
stemp=stemp & rnumber(0,9)
next
genhsess=stemp
end function
%>

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.