Ver Mensaje Individual
  #66 (permalink)  
Antiguo 29/04/2005, 09:20
Avatar de Muzztein
Muzztein
 
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 4 meses
Puntos: 16
estas sonviejas

Un par de funciones viejas mas refinadas


Esta funcion da la opcion de checar por la existencia de una variable, segun un tipo de dato requerido, en el caso de que no cumpla con la regla a validar, asigna un valor por defecto.

Código:
function checa_cadena(cadena,tipo_de_dato_a_chequear,valor_por_defecto)

	'tipo_de_dato_a_chequear = 0 cadena deberia ser una cadena de largo no igual a cero
	'tipo_de_dato_a_chequear = 1 cadena deberia ser numerico
	'tipo_de_dato_a_chequear = 2 cadena deberia ser fecha
	
	Select Case tipo_de_dato_a_chequear
    Case 0
		if len(cadena) = 0 then
			salida = valor_por_defecto
		else
			salida = cstr(cadena)
		end if
	Case 1
		if isnumeric(cadena) = false then
			salida = valor_por_defecto
		else
			salida = cadena
		end if
	Case 2
		if isdate(cadena) = false then
			salida = valor_por_defecto
		else
			salida = cadena
		end if
    Case Else 
		salida = cadena 
	End Select

	checa_cadena = salida

end function

Esta funcion unifica los modos de limpiar que puede presentar una variable.
permitiendo anexar mas formas de limpiar una cadena.

Código:
function limpia_cadena(str_a_limpiar,modo_de_limpiar)

	'modo_de_limpiar = 0 prepara str_a_limpiar para insert 
	'modo_de_limpiar = 1 Prepara str_a_limpiar para insert evitando, ademas, la entrada de HTML
	'modo_de_limpiar = 2 Prepara str_a_limpiar para un login y evita sql injection
	
	str = trim(str_a_limpiar)
	
	Select Case modo_de_limpiar
    Case 0
		str = replace(str,"'","''")
	Case 1
		str = replace(str,"'","''")
		str = replace(str,"<","&lt;")
		str = replace(str,">","&gt;")
	Case 2
                          str = lcase(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 = str_a_limpiar
	End Select

	limpia_cadena = str

end function


ahi sip


Un ejemplo de uso!

Código:
	iws_login		= checa_cadena(request.Form("iws_login"),0,false)
	iws_password	= checa_cadena(request.Form("iws_password"),0,false)
	
	if iws_login = false or iws_password = false then termina
	
	iws_login	 = limpia_cadena(iws_login,2)
	iws_password = limpia_cadena(iws_password,2)

Última edición por Muzztein; 29/04/2005 a las 14:11