Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/07/2008, 10:44
piskui
 
Fecha de Ingreso: mayo-2007
Mensajes: 239
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Limitar cajas de texto para evitar injection SQL

Al final lo hice de la siguiente manera:
En mi funcion valida_datos, lo primero hice una llamada a la funcion Limpiar, pero creo que no me entra en el Case 0....os pongo el codigo:
Código PHP:
function ValidaDatos(Nombre,ValorDefecto)

Nombre=Limpiar(Nombre,"0") <-La llamada es correcta?? se llama con "0" o sin comillas o como???
if (
Request.Form(Nombre) <> ""then
ValidaDatos 
Request.Form(Nombre)
.... 
Código PHP:
Function Limpiar(strlimpiar,modolimpiar)
Dim str
    
'modolimpiar = 0 Prepara strlimpiar para un login y evita sql injection    

    str = strlimpiar
    
    Select Case modolimpiar

    Case "0":
        str = replace(str,"x","j")
        str = replace(str,"  "," ")
        str = replace(str,"=","")
        str = replace(str,"'","")
        str = replace(str,"""""","")
        str = replace(str," 
or ","")
        str = replace(str," 
and ","")
        str = replace(str,"
(","")
        str = replace(str,"
)","")
        str = replace(str,"
<","")
        str = replace(str,"
>","")
        str = replace(str,"
having ","")
        str = replace(str,"
group by","")
        str = replace(str,"
union select sum","")
        str = replace(str,"
union select min","")
        str = replace(str,"
--","")
        str = replace(str,"
select ","")
        str = replace(str,"
insert ","")
        str = replace(str,"
update ","")
        str = replace(str,"
delete ","")
        str = replace(str,"
drop ","")
        str = replace(str,"
-shutdown","")

    Case Else 
        str = strlimpiar
    End Select

    Limpiar = str

End Function 
El caso es que me logeo correctamente, pero para probar que funciona meti el primer replace ("str = replace(str,"x","j")") ya que mi usuario empieza por 'j' y lo pruebo poniendo el usuario empezando por 'x' que segun este replace.....lo cambiaria por la 'j' y deberia entrar no? pues no entra!!!!!!!!!

Se me ocurre que no este llamando bien a la funcion limpiar desde la otra funcion, el tema del "0".
Otra cosa podria ser que el problema sea por no haber definido los tipos "strlimpiar y modolimpiar"

Espero su ayuda,gracias y un saludo.

Última edición por piskui; 25/07/2008 a las 11:52