Ir para conteúdo

POWERED BY:

Arquivado

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

saloeric

Proteção Sql Injection

Recommended Posts

Bom dia,

 

fiz uma função baseada no mysql_real_escape_string do php,

 

Function entraString(Str)
	dim valor : valor = Str

	if trim(valor) <> "" then
		valor = replace(valor, "\", "\\")
		valor = replace(valor, "\x00", "x00")
		valor = replace(valor, "\n", "n")
		valor = replace(valor, "\r", "r")
		valor = replace(valor, "'", "\'")
		valor = replace(valor, """", "\""")
		valor = replace(valor, "\x1a", "x1a")	
		entraString = valor
	else
		entraString = valor
	end if
end Function

só que ao testar pela ferramenta de vulnebarilidades "Acunetix" num teste de login via post indica que tem problema com sql injection, depois ao tentar outra ferramenta de hacking o "havij" não consigo hackear, o que é bom, mas o resultado do "Acunetix" deixou-me preocupado, poderá alguém testar esta função e se consegue fazer sql injection?

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa assim:

 

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

não sou adepto dessa função, sou da opinião que tudo o que utilizador escreva seja inserido na base de dados.

 

Estive a testar em php com a função mysql_real_escape_string e o "Acunetix" também diz que tem vulnerabilidades, no "havij" não consigo hackear, vou testar agora em php com pdo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de fazer 3 testes num login com "POST" em utf-8, 1 com asp e a função mencionada em cima, outro em php com mysql_real_escape_string e outra também em php com pdo,os resultados no "Acunetix" foram os seguintes:

 

1.Asp -> deu 1 alerta de "Blind Sql Injection"

2.Php(mysql_real_escape_string) -> deu 2 alertas de "Sql Injection"

3.Php(pdo) -> não deu alertas de nenhum tipo de sql injection, deu apenas alerta para 2 erros fatais resultantes do ataque



Update:

 

nos teste em asp num dos parametros estava a usar uma função que consultava também a base de dados, mas esse select não estava "tratado",

 

depois de retirar essa função e voltar a fazer os testes:

 

em asp já não deu alertas de sql injection. ficou ok.

 

estranho mesmo é que no de Php(mysql_real_escape_string) esses alertam existem. Embora a minha função em asp seja baseada no mysql_real_escape_string, na verdade não é bem igual.

 

ao fazer em php

 

print mysql_escape_string("\x00, \n, \r, \, ', \" and \x1a.");

retorna isso

\0, \n, \r, \\, \', \" and \Z.

em asp com a função em cima

 

response.write entraString("\x00, \n, \r, \, ', "" and \x1a.")

retorna isso

\x00, \n, \r, \\, \', \" and \x1a. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

naquela função adicione

~&#x([0-9a-f]+);~ei
~&#([0-9]+);~e

 

"--", ";", "/*", "*/", "@@", "@",_ "char", "nchar", "varchar", "nvarchar",_ "alter", "begin", "cast", "create", "cursor",_ "declare", "delete", "drop", "end", "exec",_ "execute", "fetch", "insert", "kill", "open",_ "select", "sys", "sysobjects", "syscolumns",_ "table", "update","xp_", "#", "%", "&", "'", "(", ")", "/", "\", ":", ";", "<", ">", "=", "[", "]", "?", "`", "|") ' 




para bloquear Blind SQL Injection

Compartilhar este post


Link para o post
Compartilhar em outros sites

10013925_695362610507538_790277155_n.jpg

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.