sobre la validacion

09/10/2005 - 19:53 por Enrique | Informe spam
hola a todos,

tengo un lio con la validacion. sé recuperar datos pero lo cierto es que no
los he validado todavia. no sé si se debe validar del lado del cliente, del
servidor o de ambos lados y en que lenguaje

creo saber, y corregirme si me confundo que ASP valida los datos del lado
del servidor, por lo que se hace un POST que abre una pagina determinada,
esta pagina recibe los valores mediante un "request.form" y si los datos son
inexistentes o incorrectos, se manda un parametro para cada valor erroneo a
la primera pagina en forma de URL codificada o parametrizada mediante un GET
que se recibira por el otro lado mediante un request.querystring y despues
se podra escribir el mensaje de error al lado del control en el que se ha
puesto el valor erroneo o todos los mensajes de error de forma masiva al
principio de la pagina.

imaginando que tengo 2 campos nombre y appellido lo haria de la siguiente
forma:

en el cliente (paginaA.asp): ***********************************

nom=request.querystring("nom")
app=request.querystring("app")

if nom = "no" then
muestra mensaje en el lugar adecuado
end if

if app="no" then
muestra mensaje en el lugar adecuado
end if
...
POST: paginaB.asp
...

en el servidor (paginaB.asp): *********************************
nombre = request.form("nombre")
appellido=request.form("appellido")

if nombre ="" then
nom="no"
else
nom="si"
end if

if appellido = "" then
app="no"
else
app="si"
end if

GET: ... "paginaA?app=" & app & "nom=" & nom

¿os parece eso correcto? ¿no esta mal pero puede mejorar? ¿a evitar
absolutamente?


por otro lado, creo saber que en ASP .NET se hace validacion tanto del lado
del cliente como del lado del servidor porque si se trata de una URL
parametrizada (codificada) el usuario puede perfectamente modificar el valor
de los parametros lo que supone la modificacion del lado del servidor.

¿es eso cierto? ¿no se puede hacer lo mismo en ASP?

¿como soleis actuar normalmente para la validacion? ¿que tipo de funciones
de validacion creais? en fin, lo que me digais me interesa
respecto a los lenguajes prefiero dejar otro POST para preguntar largo y
tendido

muchas gracias de antemano por su ayuda.

Preguntas similare

Leer las respuestas

#1 Sandra y María Claudia
10/10/2005 - 15:51 | Informe spam
Hola Enrique:
Pues mira. la validación puede darse que se de en ambos casos: cliente
y servidor. ¿Cómo saber que y cuando hacerla?. En realidad es un principio
sencillo (no es universal por si acaso). Aquellos datos que se necesitan de
todas formas (digamos nombre, email, nacionalidad, etc.) se validan en el
cliente tomando la premisa "deben estar si o si" antes de procesar el
formulario. De igual forma se cosidera la validación de solo datos
númericos, que el email este bien escrito, y cosas así.
La validación por lado del servidor debería estar dirigida principalmente a
2 aspectos: ver si uno de los datos ya esta en la base de datos o no (el
caso más tipico es el de nombre de usuario) y el otro es el procesar datos
(por ejemplo, uno ingresa la fecha de su nacimiento y asp calcula la edad,
cosas así)

Espero haberte dado alguna ayuda

Besitos!!!!!!!

____________________________________________________________________________________
SyMC
Suerte es la ayuda que te da la vida... Destino es lo que haces con esta
ayuda
Comparte con los demás, es la mejor manera de crecer y quererse más
El SP2 lo puedes bajar desde
http://www.microsoft.com/downloads/...p;FamilyID9c9dbe-3b8e-4f30-8245-9e368d3cdb5a
El artículo de JM Tella sobre como integrar SP2 con el Xp esta en
http://www.multingles.net/docs/xpsp2.htm
Ad-aware SE en español: http://www.lavasoft.de/spanish/
spywareblaster:http://www.ct7support.com/javacool/...nload.html
Spybot - Search & Destroy
1.3:http://www.zonavirus.com/descargas/spybotsd13.exe
The Cleaner http://www.moosoft.com/
CWShreader, Hijackthis http://www.majorgeeks.com/download4086.html
Respuesta Responder a este mensaje
#2 dani castillo
10/10/2005 - 16:13 | Informe spam
En general yo considero:

1 ) si tienes que elegir una validacion sola, en servidor, con asp, es mas
sencilla que el javascript, y no es "saltable" (luego te cuento)

2) en algunos campos sencillos de comprobar, la validacion de cliente
(aunque no sustituya completamente a la de servidor) ayuda al usuario al no
tener tiempos muertos, el javascript es inmediato y da rabia a veces pulsar
un "enviar" de un formulario y que a los pocos segundos te diga que te falta
poner el email..., el js saltaria enseguida el aviso

3) toda la validacion sensible, de datos criticos para el funcionamiento,
deberia ser en el servidor, ej:
a) nunca podrias validar la clave de entrada a un aplicativo por
javascript... porque es visible en ver/codigo fuente
b) si tu aplicacion pongamos que pueda bloquearse o llevar a mal
funcionamiento general por algun dato... te aseguras validando y corrigiendo
en asp servidor de que no suceda, yo puedo crearme un formulario en mi
equipo que "ataque" a tu aplicacion saltandome todas tus validaciones
javascript, si consideras que en algunos formularios clave eso seria dañino
o peligroso, valida por servidor
c) datos como el identificador del usuario podrian pasarse por querystring
o campos ocultos de formulario... ojo con esto!!!! puede llegar a ser muy
peligroso porque uno podria de nuevo fabricarse un form que engañara a tu
aplicacion :|, los datos sensibles al session


en resumen:
javascript/cliente: seguridad nula, pero respuesta inmediata
asp/servidor: seguridad alta, oculto al usuario, y es el que finalmente debe
guardar los datos, desventaja: lento en acceso remoto

Situacion ideal:

formulario con javascript cliente que valida los datos mas comunes,
comprueba que los numericos lo sean, que esten rellenados los campos
requeridos , que no se sobrepasa la longitud maxima de las cadenas, etc

asp servidor: vuelve a comprobar los datos mas criticos del formulario (sin
terminar de creerse al javascript...) y en caso de que todo este ok guarda /
actua en consecuencia



"Enrique" escribió en el mensaje
news:
hola a todos,

tengo un lio con la validacion. sé recuperar datos pero lo cierto es que
no
los he validado todavia. no sé si se debe validar del lado del cliente,
del
servidor o de ambos lados y en que lenguaje

creo saber, y corregirme si me confundo que ASP valida los datos del lado
del servidor, por lo que se hace un POST que abre una pagina determinada,
esta pagina recibe los valores mediante un "request.form" y si los datos
son
inexistentes o incorrectos, se manda un parametro para cada valor erroneo
a
la primera pagina en forma de URL codificada o parametrizada mediante un
GET
que se recibira por el otro lado mediante un request.querystring y despues
se podra escribir el mensaje de error al lado del control en el que se ha
puesto el valor erroneo o todos los mensajes de error de forma masiva al
principio de la pagina.

imaginando que tengo 2 campos nombre y appellido lo haria de la siguiente
forma:

en el cliente (paginaA.asp): ***********************************

nom=request.querystring("nom")
app=request.querystring("app")

if nom = "no" then
muestra mensaje en el lugar adecuado
end if

if app="no" then
muestra mensaje en el lugar adecuado
end if
...
POST: paginaB.asp
...

en el servidor (paginaB.asp): *********************************
nombre = request.form("nombre")
appellido=request.form("appellido")

if nombre ="" then
nom="no"
else
nom="si"
end if

if appellido = "" then
app="no"
else
app="si"
end if

GET: ... "paginaA?app=" & app & "nom=" & nom

¿os parece eso correcto? ¿no esta mal pero puede mejorar? ¿a evitar
absolutamente?


por otro lado, creo saber que en ASP .NET se hace validacion tanto del
lado
del cliente como del lado del servidor porque si se trata de una URL
parametrizada (codificada) el usuario puede perfectamente modificar el
valor
de los parametros lo que supone la modificacion del lado del servidor.

¿es eso cierto? ¿no se puede hacer lo mismo en ASP?

¿como soleis actuar normalmente para la validacion? ¿que tipo de funciones
de validacion creais? en fin, lo que me digais me interesa
respecto a los lenguajes prefiero dejar otro POST para preguntar largo y
tendido

muchas gracias de antemano por su ayuda.






Respuesta Responder a este mensaje
#3 dani castillo
10/10/2005 - 16:21 | Informe spam
se me olvidaba...
en temas verdaderamente sensibles, puedes (y debes) hacer una validacion
extra: el ASP que recoge los datos del formulario debe comprobar el referer
de donde le llegan esos datos , tambien conviene comprobar que no le llegan
duplicados (los usuarios suelen ponerse nerviosos y apretar 10 veces el
boton enviar ...) , comprobaciones extra que puedes usar son por ejemplo:

1 ) muestro el formulario en asp , generandome un numero aleatorio que
guardo en session y pongo en un campo oculto del formulario como hidden

2) en el asp que recogo los datos compruebo :
a) que el referer sea el formulario anterior , o al menos que se encuentre
en mi dominio (por si puedes llegar desde distintos forms de tu aplicacion)
b) si el valor de session coincide con el valor del hidden trato el form,
si no coincide ignoro el formulario (ataque externo o datos
duplicados/anticuados) , en cualquier caso pongo ese session a "" cuando
trato el formulario, de esta forma trato solo el primer "click" sobre enviar

aparte asi complicas un poco los ataques externos (no del todo... pero si un
poco)

como desventaja: un usuario no podra abrir dos formularios de esos y que los
dos respondan, solo funcionara el ultimo abierto , en aplicaciones planeadas
lineales (sin multiples ventanas) no deberia ser un problema


"dani castillo" escribió en el mensaje
news:
En general yo considero:

1 ) si tienes que elegir una validacion sola, en servidor, con asp, es mas
sencilla que el javascript, y no es "saltable" (luego te cuento)

2) en algunos campos sencillos de comprobar, la validacion de cliente
(aunque no sustituya completamente a la de servidor) ayuda al usuario al
no tener tiempos muertos, el javascript es inmediato y da rabia a veces
pulsar un "enviar" de un formulario y que a los pocos segundos te diga que
te falta poner el email..., el js saltaria enseguida el aviso

3) toda la validacion sensible, de datos criticos para el funcionamiento,
deberia ser en el servidor, ej:
a) nunca podrias validar la clave de entrada a un aplicativo por
javascript... porque es visible en ver/codigo fuente
b) si tu aplicacion pongamos que pueda bloquearse o llevar a mal
funcionamiento general por algun dato... te aseguras validando y
corrigiendo en asp servidor de que no suceda, yo puedo crearme un
formulario en mi equipo que "ataque" a tu aplicacion saltandome todas tus
validaciones javascript, si consideras que en algunos formularios clave
eso seria dañino o peligroso, valida por servidor
c) datos como el identificador del usuario podrian pasarse por
querystring o campos ocultos de formulario... ojo con esto!!!! puede
llegar a ser muy peligroso porque uno podria de nuevo fabricarse un form
que engañara a tu aplicacion :|, los datos sensibles al session


en resumen:
javascript/cliente: seguridad nula, pero respuesta inmediata
asp/servidor: seguridad alta, oculto al usuario, y es el que finalmente
debe guardar los datos, desventaja: lento en acceso remoto

Situacion ideal:

formulario con javascript cliente que valida los datos mas comunes,
comprueba que los numericos lo sean, que esten rellenados los campos
requeridos , que no se sobrepasa la longitud maxima de las cadenas, etc

asp servidor: vuelve a comprobar los datos mas criticos del formulario
(sin terminar de creerse al javascript...) y en caso de que todo este ok
guarda / actua en consecuencia



"Enrique" escribió en el mensaje
news:
hola a todos,

tengo un lio con la validacion. sé recuperar datos pero lo cierto es que
no
los he validado todavia. no sé si se debe validar del lado del cliente,
del
servidor o de ambos lados y en que lenguaje

creo saber, y corregirme si me confundo que ASP valida los datos del lado
del servidor, por lo que se hace un POST que abre una pagina determinada,
esta pagina recibe los valores mediante un "request.form" y si los datos
son
inexistentes o incorrectos, se manda un parametro para cada valor erroneo
a
la primera pagina en forma de URL codificada o parametrizada mediante un
GET
que se recibira por el otro lado mediante un request.querystring y
despues
se podra escribir el mensaje de error al lado del control en el que se ha
puesto el valor erroneo o todos los mensajes de error de forma masiva al
principio de la pagina.

imaginando que tengo 2 campos nombre y appellido lo haria de la siguiente
forma:

en el cliente (paginaA.asp): ***********************************

nom=request.querystring("nom")
app=request.querystring("app")

if nom = "no" then
muestra mensaje en el lugar adecuado
end if

if app="no" then
muestra mensaje en el lugar adecuado
end if
...
POST: paginaB.asp
...

en el servidor (paginaB.asp): *********************************
nombre = request.form("nombre")
appellido=request.form("appellido")

if nombre ="" then
nom="no"
else
nom="si"
end if

if appellido = "" then
app="no"
else
app="si"
end if

GET: ... "paginaA?app=" & app & "nom=" & nom

¿os parece eso correcto? ¿no esta mal pero puede mejorar? ¿a evitar
absolutamente?


por otro lado, creo saber que en ASP .NET se hace validacion tanto del
lado
del cliente como del lado del servidor porque si se trata de una URL
parametrizada (codificada) el usuario puede perfectamente modificar el
valor
de los parametros lo que supone la modificacion del lado del servidor.

¿es eso cierto? ¿no se puede hacer lo mismo en ASP?

¿como soleis actuar normalmente para la validacion? ¿que tipo de
funciones
de validacion creais? en fin, lo que me digais me interesa
respecto a los lenguajes prefiero dejar otro POST para preguntar largo y
tendido

muchas gracias de antemano por su ayuda.










Respuesta Responder a este mensaje
#4 Matías Iacono
10/10/2005 - 17:30 | Informe spam
En la primera parte, me parece que te complicas demaciado.

Personalmente, prefiero, ademas de validar solo desde el lado del servidor,
usar la misma pagina para ello. Eso de ir de un lado a otro es realmente
complicado, y te genera pedidos al servidor innecesarios.

Lo que podrias hacer es, por ejemplo, tener un campo oculto "hidden" en tu
formulario, que te diga la accion a realizar, en base a este campo, sabes si
tienes que aplicar tu form, o simplemente debes mostrar la pagina.

Te planteo un ejemplo.

<%
if len(trim(request.form("accion))) <> 0 then
'Quiere decir que hay algo en el campo hidden
select case request.form("accion")
case "1"
'Valido datos, redirijo a alguna otra pagina, inserto a la
db.
'Lo que sea
case "2"
'Podria tener mas de una accion.
end select
end if

%>

<form . action=MismaPagina.asp>

...
...
...

<input type=hidden name=accion value=1

</form>

De esta manera, la primera vez que el usuario entre a tu pagina, como el
campo Hidden es inexistente, entonces mostrara tu pagina sin hacer ninguna
accion. Pero cuando se haga un post de tu formulario, como este contiene el
campo hidden, y dependiendo de lo que le pongas en el, hara alguna otra
accion. La cual te puede servir para validar datos, o lo que fuera, y luego
decidir que haras. Por ejemplo, mostrar la misma pagina, pero con algun
mensaje.

por otro lado, creo saber que en ASP .NET se hace validacion tanto del
lado
del cliente como del lado del servidor porque si se trata de una URL
parametrizada (codificada) el usuario puede perfectamente modificar el
valor
de los parametros lo que supone la modificacion del lado del servidor.

¿es eso cierto? ¿no se puede hacer lo mismo en ASP?



Si, si pasas algo por querystring el usuario podria modificarlo sin
problemas. Se puede hacer lo mismo en ASP, ten en cuenta que ASP y ASP.net
son las mismas cosas, son exactamente lo mismo que PHP, o JSP, o el lenguaje
que gustes. Todos corren en el HTTP, y todos arrojan HTML como resultado,
asi que al final todos tienen que basarse en los mismos estandares.

Lo que usa ASP.net para validar son los controles de validacion, que no son
mas que un grupo de codigo en JavaScript, que puedes parametrizar. De esta
manera, si usas JavaScript en ASP, tambien puedes lograr lo mismo. Claro
esta, que, en .Net, este codigo ya esta hecho, y en ASP, deberas crear todo
el codigo JavaScript tu mismo. Entra a www.devguru.com y consulta el indice
JavaScript.



Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3
"Enrique" escribió en el mensaje
news:
hola a todos,

tengo un lio con la validacion. sé recuperar datos pero lo cierto es que
no
los he validado todavia. no sé si se debe validar del lado del cliente,
del
servidor o de ambos lados y en que lenguaje

creo saber, y corregirme si me confundo que ASP valida los datos del lado
del servidor, por lo que se hace un POST que abre una pagina determinada,
esta pagina recibe los valores mediante un "request.form" y si los datos
son
inexistentes o incorrectos, se manda un parametro para cada valor erroneo
a
la primera pagina en forma de URL codificada o parametrizada mediante un
GET
que se recibira por el otro lado mediante un request.querystring y despues
se podra escribir el mensaje de error al lado del control en el que se ha
puesto el valor erroneo o todos los mensajes de error de forma masiva al
principio de la pagina.

imaginando que tengo 2 campos nombre y appellido lo haria de la siguiente
forma:

en el cliente (paginaA.asp): ***********************************

nom=request.querystring("nom")
app=request.querystring("app")

if nom = "no" then
muestra mensaje en el lugar adecuado
end if

if app="no" then
muestra mensaje en el lugar adecuado
end if
...
POST: paginaB.asp
...

en el servidor (paginaB.asp): *********************************
nombre = request.form("nombre")
appellido=request.form("appellido")

if nombre ="" then
nom="no"
else
nom="si"
end if

if appellido = "" then
app="no"
else
app="si"
end if

GET: ... "paginaA?app=" & app & "nom=" & nom

¿os parece eso correcto? ¿no esta mal pero puede mejorar? ¿a evitar
absolutamente?


por otro lado, creo saber que en ASP .NET se hace validacion tanto del
lado
del cliente como del lado del servidor porque si se trata de una URL
parametrizada (codificada) el usuario puede perfectamente modificar el
valor
de los parametros lo que supone la modificacion del lado del servidor.

¿es eso cierto? ¿no se puede hacer lo mismo en ASP?

¿como soleis actuar normalmente para la validacion? ¿que tipo de funciones
de validacion creais? en fin, lo que me digais me interesa
respecto a los lenguajes prefiero dejar otro POST para preguntar largo y
tendido

muchas gracias de antemano por su ayuda.






Respuesta Responder a este mensaje
#5 Enrique
10/10/2005 - 18:38 | Informe spam
muchas gracias. eso del campo "hidden" no se me habia occurido la verdad
como alternativa a la URL codificada. Tomo nota de todo eso y lo voy a
aplicar ahora mismo.

solo una pregunta mas y aunque prefieras validar todo del lado del servidor,
te la hago igualmente: ¿porque empeñarse en funciones de validaciones del
lado del cliente en JavaScript si se pueden hacer en VBScript (lo entendera
Netscape explorer si se le instala el plugin adecuado que seguramente se le
pedira de forma automatica al usuario)?

gracias de nuevo por tu ayuda :-)

"Matías Iacono" escribió en el mensaje
news:
En la primera parte, me parece que te complicas demaciado.

Personalmente, prefiero, ademas de validar solo desde el lado del


servidor,
usar la misma pagina para ello. Eso de ir de un lado a otro es realmente
complicado, y te genera pedidos al servidor innecesarios.

Lo que podrias hacer es, por ejemplo, tener un campo oculto "hidden" en tu
formulario, que te diga la accion a realizar, en base a este campo, sabes


si
tienes que aplicar tu form, o simplemente debes mostrar la pagina.

Te planteo un ejemplo.

<%
if len(trim(request.form("accion))) <> 0 then
'Quiere decir que hay algo en el campo hidden
select case request.form("accion")
case "1"
'Valido datos, redirijo a alguna otra pagina, inserto a la
db.
'Lo que sea
case "2"
'Podria tener mas de una accion.
end select
end if

%>

<form . action=MismaPagina.asp>

...
...
...

<input type=hidden name=accion value=1

</form>

De esta manera, la primera vez que el usuario entre a tu pagina, como el
campo Hidden es inexistente, entonces mostrara tu pagina sin hacer ninguna
accion. Pero cuando se haga un post de tu formulario, como este contiene


el
campo hidden, y dependiendo de lo que le pongas en el, hara alguna otra
accion. La cual te puede servir para validar datos, o lo que fuera, y


luego
decidir que haras. Por ejemplo, mostrar la misma pagina, pero con algun
mensaje.

> por otro lado, creo saber que en ASP .NET se hace validacion tanto del
> lado
> del cliente como del lado del servidor porque si se trata de una URL
> parametrizada (codificada) el usuario puede perfectamente modificar el
> valor
> de los parametros lo que supone la modificacion del lado del servidor.
>
> ¿es eso cierto? ¿no se puede hacer lo mismo en ASP?

Si, si pasas algo por querystring el usuario podria modificarlo sin
problemas. Se puede hacer lo mismo en ASP, ten en cuenta que ASP y ASP.net
son las mismas cosas, son exactamente lo mismo que PHP, o JSP, o el


lenguaje
que gustes. Todos corren en el HTTP, y todos arrojan HTML como resultado,
asi que al final todos tienen que basarse en los mismos estandares.

Lo que usa ASP.net para validar son los controles de validacion, que no


son
mas que un grupo de codigo en JavaScript, que puedes parametrizar. De esta
manera, si usas JavaScript en ASP, tambien puedes lograr lo mismo. Claro
esta, que, en .Net, este codigo ya esta hecho, y en ASP, deberas crear


todo
el codigo JavaScript tu mismo. Entra a www.devguru.com y consulta el


indice
JavaScript.



Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3
"Enrique" escribió en el mensaje
news:
> hola a todos,
>
> tengo un lio con la validacion. sé recuperar datos pero lo cierto es que
> no
> los he validado todavia. no sé si se debe validar del lado del cliente,
> del
> servidor o de ambos lados y en que lenguaje
>
> creo saber, y corregirme si me confundo que ASP valida los datos del


lado
> del servidor, por lo que se hace un POST que abre una pagina


determinada,
> esta pagina recibe los valores mediante un "request.form" y si los datos
> son
> inexistentes o incorrectos, se manda un parametro para cada valor


erroneo
> a
> la primera pagina en forma de URL codificada o parametrizada mediante un
> GET
> que se recibira por el otro lado mediante un request.querystring y


despues
> se podra escribir el mensaje de error al lado del control en el que se


ha
> puesto el valor erroneo o todos los mensajes de error de forma masiva al
> principio de la pagina.
>
> imaginando que tengo 2 campos nombre y appellido lo haria de la


siguiente
> forma:
>
> en el cliente (paginaA.asp): ***********************************
>
> nom=request.querystring("nom")
> app=request.querystring("app")
>
> if nom = "no" then
> muestra mensaje en el lugar adecuado
> end if
>
> if app="no" then
> muestra mensaje en el lugar adecuado
> end if
> ...
> POST: paginaB.asp
> ...
>
> en el servidor (paginaB.asp): *********************************
> nombre = request.form("nombre")
> appellido=request.form("appellido")
>
> if nombre ="" then
> nom="no"
> else
> nom="si"
> end if
>
> if appellido = "" then
> app="no"
> else
> app="si"
> end if
>
> GET: ... "paginaA?app=" & app & "nom=" & nom
>
> ¿os parece eso correcto? ¿no esta mal pero puede mejorar? ¿a evitar
> absolutamente?
>
>
> por otro lado, creo saber que en ASP .NET se hace validacion tanto del
> lado
> del cliente como del lado del servidor porque si se trata de una URL
> parametrizada (codificada) el usuario puede perfectamente modificar el
> valor
> de los parametros lo que supone la modificacion del lado del servidor.
>
> ¿es eso cierto? ¿no se puede hacer lo mismo en ASP?
>
> ¿como soleis actuar normalmente para la validacion? ¿que tipo de


funciones
> de validacion creais? en fin, lo que me digais me interesa
> respecto a los lenguajes prefiero dejar otro POST para preguntar largo y
> tendido
>
> muchas gracias de antemano por su ayuda.
>
>
>
>
>
>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida