FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Palabras/Letras reservadas en clase TGet
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Palabras/Letras reservadas en clase TGet
Posted: Tue Jul 27, 2010 11:15 PM

Antonio/Daniel,

Estoy viendo como evitar que se introduzcan algunas letras o palabras en algunos GETs, esto para que no se pueda hacer el famoso "injection" y hacer validaciones en todos lados va a estar de locos !!

Viendo la clase creo que seria en el Metodo lValid, pero no quisiera hacer algo que podria ocasionar mas problemas que soluciones :?

Podrian apoyarme en la modificacion/ajuste para lograr tal acometido.

Muchas Gracias

Saludos

FWH 10.6 + xHarbour + Borland 582
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Re: Palabras/Letras reservadas en clase TGet
Posted: Fri Jul 30, 2010 01:05 AM

Antonio/Daniel,

Alguna sugerencia ?

:roll:

FWH 10.6 + xHarbour + Borland 582
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Palabras/Letras reservadas en clase TGet
Posted: Fri Jul 30, 2010 09:19 AM

Raymundo,

Que palabras no quieres permitir ?

Puedes usar el VALID ó el ON CHANGE si quieres que nada más escribirlo ya lo rechaze, antes de intentar pasar a otro control.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Re: Palabras/Letras reservadas en clase TGet
Posted: Fri Jul 30, 2010 04:03 PM
Antonio,

Me explico un poco mas :

En un dialog para ingresar un item nuevo al catalogo tengo digamos unos 30 datos por llenar todos diferentes : fechas, numericos, textos, etc.
Al momento de grabar el registro, meto todos los datos a un arreglo que mando a una funcion, esta funcion se encarga en "convertirlo" en comando MySql para agregarlo a la tabla.
Code (fw): Select all Collapse
aadd( aVpDts2Sav, { nKFol2Psd,aVtaDts[1],date(),cXOprTim,aVtaDts[ 4],aKurUsr[1], ;
    lbCapVta:aArrayData[nQ,1],lbCapVta:aArrayData[nQ,3],lbCapVta:aArrayData[nQ,4], ;
    lbCapVta:aArrayData[nQ,5],lbCapVta:aArrayData[nQ,6],lbCapVta:aArrayData[nQ,7], ;
    lbCapVta:aArrayData[nQ,8],cOprXStr,cObs2Sav } )

    NwInsReks( "VTASPSD", cVpFlds2Sav, aVpDts2Sav )

Y me regresa algo como esto :

INSERT INTO VTASPSD ( pidcns,poprt,poprd,poprx,pcstid,pitmusr,pitmid,pitmuntx,pitmuns,pitmdscp,pitmdsci,pitmunty,pitmimp,pitmdet,poprobs,cubx ) VALUES ( 110.00,1,'2010-07-30','10:50:51',756,'','VcYgeqVqz',0.00,1.00,0,0,0.00,0.0000,'{ ´VcYgeqVqz´, ´SYD RESORTE TRAS´, 0.00, 1.00, 0, 0, 0.00, 0.0000, ´F4304´, ´x4bclhiFZ´, 0, 1, 0, ´SYF4304´, 0, ´´, ´´, ´SYD´, ´RESORTE SUSPENSION/MISC´, ´5N3zfN1jT´, 0.00, 0, 0 }','',101 ) ;

Y solo hasta que le llega el dato a la funcion puedo saber si hay algo que no deba procesarse, hablando del "injection" puede ser algun comando, o todo caso un caracter : ' \
Esto es lo que quisiera poder "atrapar" desde que estan tecleando, como bien dices lo puedo hacer con un valid pero tendria que ponerselo en todos lados, si es posible dentro de la clase, todo seria en automatico.

Saludos
FWH 10.6 + xHarbour + Borland 582
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Re: Palabras/Letras reservadas en clase TGet
Posted: Fri Jul 30, 2010 04:07 PM

2da parte :

Hablando de palabras : CREATE USER, DELETE FROM, INSERT INTO, SHOW, etc, etc

PD : Al momento de escribir un mensaje de unas 15 lineas, llega el momento que la pantalla esta "brincando" cada letra que tecleo y "esconde" las ultimas linea, lo que hace dificil terminar el post.
Es normal ??

saludos

FWH 10.6 + xHarbour + Borland 582
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Palabras/Letras reservadas en clase TGet
Posted: Fri Jul 30, 2010 09:29 PM

Raymundo,

Estas usando un GET ó un GET multilínea ?

Para textos de varias líneas debes usar un GET multilínea. Revisa samples\TestMemo.prg

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Palabras/Letras reservadas en clase TGet
Posted: Fri Jul 30, 2010 09:35 PM

Raymundo,

Para no tener que modificar cada GET podrias modificar el dato bChange de la clase, aunque eso afectará a todos tus GETs.

Otra opción es convertirlo en una CLASSDATA en vez de DATA.

No se si esto te puede servir para lo que necesitas

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Re: Palabras/Letras reservadas en clase TGet
Posted: Fri Jul 30, 2010 10:19 PM

Antonio,

Hasta donde recuerdo todos son Gets "normalitos" pero deja checo por si puse algun multilinea.

Cierto, cualquier ajuste que pueda hacer afectaria a todos, pero principalmente quiero validar los tipo Character.

Acerca que si tal metodo o data o classdata ese es mi gran problema : No es mi fuerte el manejo de las clases y relacionados :?

Yo quisiera tener una "lista negra" de palabras y algunas letras en un arreglo y dentro de la clase justo antes de pasar al siguiente control, validar el contenido, si existe algo impedir que avanze, tal y como se hace con las fechas, aunque no se le ponga validacion alguna, no te permite el 30 de febrero :D

Si consideras que daria mas problemas que soluciones, ni modo, me pongo a validar mis Gets manualmente ( principalmente aquellos que tienen una longitud considerable ).

Saludos

FWH 10.6 + xHarbour + Borland 582
Posts: 694
Joined: Fri Oct 07, 2005 06:58 AM
Re: Palabras/Letras reservadas en clase TGet
Posted: Sat Jul 31, 2010 06:35 PM
Raymundo,

Yo he cambiado la clase tget, para controlar los caracteres incorrectos en las sql.
Con el caracter que he encontrado problemas es el apostrofe

En concreto he cambiado el método lValid

Code (fw): Select all Collapse
  xSetGet := Eval(::bSetGet)
  if ValType(xSetGet)='C' .and. "'" in xSetGet 
    ...
  endif
Un saludo

Fernando González Diez

ALSIS Sistemas Informáticos
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Re: Palabras/Letras reservadas en clase TGet
Posted: Sat Jul 31, 2010 08:16 PM

Fernando,

Es exactamente lo que intento hacer, ese canijo apostrofe me ha dado muchos problemas :P

Voy a aplicar lo que comentas para hacer unas pruebas y ver si ademas puedo "atrapar" las palabras que quiero evitar.

Muchas gracias por el tip.

Saludos

FWH 10.6 + xHarbour + Borland 582

Continue the discussion