Ir para conteúdo

POWERED BY:

Arquivado

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

desisto

problema com insert

Recommended Posts

quando digito um texto 'normal' no textarea pra gravar, ele grava

 

mas se digitar algum caracter especial ele grava com valor de 0 (zero)

 

 

 

 

ele ate mostra a o texto, mas nao grava

 

Insert Into tabela(IP, Comentario) Values('127.0.0.1', 'áqqãa´´as ------ 'or''=' ------')

 

ele nao insere como texto o valor 'or''=', ele executa por isso volta o valor zero ou 1

 

 

é caso de injection apenas ou problema na gravação?

 

 

 

 

 

este é o codigo

 

alguem tem uma ideia de pq isto esta acontecendo?

 

IP			= request.ServerVariables("REMOTE_HOST")
Comentario	= request.Form("Comentario")
Termo		= request.Form("Termo")

if (Comentario <> "" and Termo <> "") then
	Conecta()
		SQLCadastra = "Insert Into tabela("&_
				"IP, "&_
				"Comentario"&_
			") Values("&_
				"'"&IP&"', "&_
				"'"&Comentario&"'"&_
			")"
			response.Write SQLCadastra
		Set SQLCadastra = Conn.Execute(SQLCadastra)
		Set SQLCadastra = Nothing
	BDescon()
end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

se estiver usando algum anti-sqlinject, ele naun grava o 'or''=',

para ser um problema na gravação, ou uma instabilidade no bd, tentar outro banco de exemplo,ou tb dar um select para ver se executa direito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

me preocupo tanto com login que acabei esquecendo como funciona o insert de texto  http://forum.imasters.com.br/public/style_emoticons/default/no.gif

 

entao...

 

eu uso esse cod. pra tratar codigos em campos, mas sera que todas essas palavras sao necessarias?

 

pq ele vai tratar as palavras que nao sao maliciosas, tipo:

 

.execitei

 

.deletei

 

.declarei

 

.tablete

 

.drops

 

 

 

 


                    """", _
                    "UPDATE", _
                    "SELECT", _
                    "INSERT", _
                    "DELETE", _
                    "DROP", _
                    "XTYPE", _
                    "EXEC", _
                    "VARCHAR", _
                    "DECLARE", _
                    "'", _
                    "EXECUTE", _
                    "XP_", _
                    "FROM", _
                    "NULL", _
                    "SET", _
                    "CAST", _
                    "CONVERT", _
                    "DATABASE", _
                    "TABLE", _
                    "WHERE", _
                    "--" _

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tratou isso antes?

 

não vi nem o replace das aspas simples

 

Comentario      = replace(request.Form("Comentario"),"'","''")
Termo           = replace(request.Form("Termo"),"'","''")

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao tinha replace de absolutamente nada

 

eu surtei e esqueci de tratar o insert de textarea  http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

 

 

 

 

sé me digam uma coisa

 

todo injection contem ' (plic)? ou ha casos que acontecem sem

 

como disse acima, a funcao vai tratar palavras que nao sao prejudiciais

Compartilhar este post


Link para o post
Compartilhar em outros sites

com essa função você não terá problemas pois ele vai gravar o código Asc(que não será compreendido no Sql) mas no html será interpretado

Function blockInjection(entrada)
 Dim i
 Dim palavra
 Dim arrayReservado
 
 arrayReservado = Array(_
 "'", _
 ">", _
 "UPDATE ", _
 "SELECT ", _
 "INSERT ", _
 "DELETE ", _
 "DROP", _
 "XTYPE ", _
 "EXEC ", _
 "VARCHAR ", _
 "DECLARE ", _
 "EXECUTE ", _
 "XP_", _
 "FROM ", _
 "NULL ", _
 "SET ", _
 "CAST ", _
 "CONVERT ", _
 "DATABASE ", _
 "TABLE ", _
 "WHERE ", _
 "--" _
 )
 For i = 0 To uBound(arrayReservado)
 palavra = 1
 While palavra <> 0
 palavra = InStr(1, entrada, arrayReservado(i), vbTextCompare)
 If palavra <> 0 Then
 entrada = Left(entrada, palavra - 1) & "" & Asc(Mid(entrada, palavra, 1)) & ";" & Right(entrada, Len(entrada) - palavra)
 End If
 Wend
 Next
 blockInjection = entrada
 Set i = Nothing
 Set palavra = Nothing
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.