Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Validando Las Entradas de Usuario
Validando Las Entradas de Usuario
usuario
ndice
Descripcin
30
usuario
Descripcin
Validacin de pginas
***************************** use******************************
Introduccin
Objetivos
Verificar que todos los controles de validacin de una pgina son vlidos.
usuario
***************************** use******************************
Introduccin
Objetivos de la leccin
Explicar la diferencia entre validacin del lado del cliente y validacin del
lado del servidor.
usuario
Evita el spoofing
o aadir
cdigo mal
intencionado
***************************** use******************************
Introduccin
Verificar valores de
control
usuario
Spoofing
Spoofing es cuando un usuario modifica la pgina HTML (Hypertext
Markup Language) que se le ha enviado, y devuelve valores que hacen que
parezca que ha introducido datos vlidos o pasado una comprobacin de
autorizacin. La validacin nicamente es susceptible de spoofing en el lado
del cliente, porque el usuario puede deshabilitar scripts del lado del cliente
cambiando las opciones del navegador y no ejecutar el cdigo de validacin
del lado del cliente, lo que crea un falso nivel de autorizacin.
Con ASP.NET, la validacin de entrada de datos del lado del cliente
siempre se repite en el lado del servidor, donde los usuarios no pueden
modificar o deshabilitar el control de validacin.
usuario
Mensaje
de error
El usuario
introduce datos
Vlido?
Respuesta inmediata
Cliente
Servidor
No
S
Vlido?
No
S
Aplicacin Web
procesada
***************************** use******************************
Introduccin
La validacin del lado del cliente mejora el uso del formulario Web Form
comprobando la entrada de datos del usuario mientras se produce. Al
comprobar si se generan errores mientras se introducen, la validacin del lado
del cliente permite detectar errores antes de que el formulario Web Form sea
enviado, evitando as el viaje de ida y vuelta necesario para la validacin del
lado del servidor.
Escribir mltiples versiones de cdigo de validacin para soportar tanto el
servidor como los diferentes navegadores puede exigir mucho tiempo al
desarrollador. Los controles de validacin ASP.NET eliminan este problema ya
que la lgica de validacin se encapsula en los controles. Los controles crean
cdigo especfico para los navegadores de forma que los usuarios con soporte
de scripts del lado del cliente tendrn validacin de entrada de datos. Los
navegadores que no soporten scripts no recibirn los scripts de validacin en el
lado del cliente.
En versiones de navegador que soporten la validacin de entrada de datos,
como Microsoft Internet Explorer 4 o posterior, la validacin del lado del
cliente se produce cuando el usuario hace clic en el botn Submit. La pgina no
se publicar de nuevo en el servidor hasta que toda la validacin del lado del
usuario
usuario
Comparar valores
***************************** use******************************
Controles de validacin
Funcin
CompareValidator
CustomValidator
RangeValidator
RegularExpression
Validator
RequiredFieldValidator
ValidationSummary
usuario
***************************** use******************************
Introduccin
Objetivos de la leccin
usuario
Introduccin
Agregar un control de
validacin
Seleccionar el control de
entrada de datos para
validar
Establecer las
propiedades de
validacin
10
usuario
Type
La propiedad Type es el tipo de datos que se validar. Visual Studio .NET
ajustar automticamente el tipo de datos para que coincida con el control
de entrada de datos adjunto al seleccionar ControlToValidate.
Entre los tipos de datos disponibles se incluyen String, Integer, Double,
Date y Currency.
EnableClientScript
La propiedad EnableClientScript indica si realizamos o no la validacin
del lado del cliente. El valor predeterminado de esta propiedad es true.
ASP.NET crea procedimientos de validacin en el lado del cliente en
Microsoft JScript .NET, y crea procedimientos de validacin del lado del
servidor en C# y Microsoft Visual Basic .NET. Esta diferencia de lenguaje
puede provocar pequeas diferencias entre las implementaciones de
controles de validacin en el lado del cliente y en el lado del servidor.
usuario
Esttico
Dinmico
***************************** use******************************
Introduccin
Mensajes de error
Propiedad ErrorMessage
La propiedad ErrorMessage es el mensaje de error que se muestra en la
ubicacin de un control de validacin cuando ste se dispara, si no est
establecida la propiedad Text. Este mensaje tambin se incluir en un
control ValidationSummary si se utiliza uno en el formulario Web Form.
11
12
usuario
Propiedad Text
La propiedad Text es el texto alternativo que se mostrar en la ubicacin del
control de validacin cuando se utilizan las propiedades ErrorMessage y
Text, y se dispara el control de validacin. Si se utiliza un control
ValidationSummary para capturar mensajes de error, normalmente se
utiliza un asterisco (*) rojo a la derecha del control de entrada de datos no
vlido para indicar dnde se encuentra el error.
En Visual Studio .NET, el script predeterminado para la propiedad Text es
imprimir el contenido de Text entre las etiquetas de inicio y final del control
de validacin, como muestra el siguiente cdigo:
<asp:type_of_validator>Text</asp:type_of_validator>
Establecer la propiedad
Display
Descripcin
Static
Dynamic
None
usuario
13
***************************** use******************************
Introduccin
Mltiples controles de
validacin en un nico
control de entrada
Ejemplo
14
usuario
Control RequiredFieldValidator
El siguiente cdigo define el control RequiredFieldValidator que verifica
que hay una entrada en txtPhone1:
<asp:RequiredFieldValidator
id="RequiredtxtPhone1Validator1"
runat="server"
ErrorMessage=
"A telephone number is required"
ControlToValidate="txtPhone1"
Text="*">
</asp:RequiredFieldValidator>
Control RegularExpressionValidator
El siguiente cdigo define el control RegularExpressionValidator que
verifica que la entrada en txtPhone1 coincide con el modelo de nmero de
telfono de Estados Unidos:
<asp:RegularExpressionValidator
id="RegulartxtPhone1Validator1"
runat="server"
ErrorMessage=_
"This telephone number is not formatted correctly"
ControlToValidate="txtPhone1"
ValidationExpression=
"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}"
Text="*">
</asp:RegularExpressionValidator>
Control CustomValidator
El siguiente cdigo define el control CustomValidator que invoca la
funcin MyServerValidation, que compara la entrada en txtPhone1 con
una base de datos de nmeros de telfono:
<asp:CustomValidator
id="CustomValidator1"
OnServerValidate = "MyServerValidation"
runat="server"
ErrorMessage="This telephone number is not recognized"
ControlToValidate="txtPhone1"
Text="*">
</asp:CustomValidator>
usuario
15
RequiredFieldValidator
z
InitialValue
CompareValidator
z
ValueToComparar o ControlToComparar
Type
Operator
RangeValidator
z
MinimumValue
MaximumValue
Type
Cdigo de ejemplo
***************************** use******************************
Introduccin
Control
RequiredFieldValidator
16
usuario
ValueToCompare
La propiedad ValueToCompare se utiliza para establecer un valor
constante con el que realizar la comparacin. Utilizamos un carcter tubera
(|) para separar varios valores. Esta propiedad se utiliza especialmente para
validar contra valores inalterables, como un lmite de edad mnima.
Utilizamos el control CustomValidator para comparar contra valores que
pueden cambiar.
ControlToCompare
La propiedad ControlToCompare se utiliza para identificar otro control
con el que realizar la comparacin. Esta propiedad puede utilizarse para
buscar errores tipogrficos haciendo que el usuario introduzca los mismos
datos en dos campos adyacentes.
Si establecemos ambas propiedades, ValueToCompare y
ControlToCompare, la propiedad ControlToCompare tiene prioridad.
Type
La propiedad Type se utiliza para especificar el tipo de datos. Utilizamos
esta propiedad cuando deseamos comparar el valor de un control de entrada
de datos contra un DataType.
Operator
La propiedad Operator especifica el operador de comparacin a utilizar.
Los operadores se especifican con el nombre de los operadores de
comparacin, como Equal, NotEqual, GreaterThan y
GreaterThanEqual.
usuario
17
MinimumValue
La propiedad MinimumValue especifica el valor mnimo del intervalo
vlido para variables numricas, o la longitud mnima de la cadena de
caracteres para variables de cadena.
MaximumValue
La propiedad MaximumValue especifica el valor mximo del intervalo
vlido para variables numricas, o la longitud mxima de la de caracteres
cadena para variables de cadena.
Type
La propiedad Type se utiliza para especificar el tipo de datos de los valores
a comparar. Los valores a comparar se convierten en este tipo de datos antes
de que se realice alguna comparacin.
18
usuario
usuario
19
Nmeros de telfono
Cdigos postales
Direcciones electrnicas
<asp:RegularExpressionValidator
<asp:RegularExpressionValidator
ControlToValidate="US_PhoneNumber"
ControlToValidate="US_PhoneNumber"
ValidationExpression="
((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}
?)|(\d{3}-))?\d{3}-\d{4} ""
ValidationExpression="((\(\d{3}\)
>*</asp:RegularExpressionValidator
>*</asp:RegularExpressionValidator >>
Cdigo de ejemplo
***************************** use******************************
Introduccin
Cuando debemos verificar que los datos introducidos por un usuario coinciden
con un modelo predefinido, como un nmero de telfono, un cdigo postal o
una direccin electrnica, utilizamos el control RegularExpressionValidator.
Este control de validacin compara el modelo de caracteres, dgitos y smbolos
introducidos por el usuario con uno o ms modelos en el control.
Cuando hacemos clic en ValidationExpression en la ventana Propiedades,
Visual Studio .NET proporciona una serie de modelos de expresiones
habituales preestablecidas. Estos modelos incluyen direcciones electrnicas y
Web, nmeros de telfono y cdigos postales. Para crear un nuevo modelo,
seleccionar la plantilla Custom. El ltimo modelo utilizado estar disponible
para ser modificado. Esta caracterstica del ltimo utilizado ofrece una base a
partir de la cual crear nuestro propio modelo.
20
Caracteres de
expresiones habituales
usuario
Definicin
Elemento 0 1.
Elementos 0 a N.
[0-n]
{n}
\w
\d
\.
usuario
21
Definicin
\w+
Un signo (@).
\w+
\.
Un periodo.
\w+
Definicin
\w+
([-+.]\w+)*
Un signo (@).
\w+
([-.]\w+)*
\.
Un punto.
\w+
([-.]\w+)*
22
usuario
Agregar un control
RequiredFieldValidator
Agregar un control
RegularExpressionValidator
***************************** use******************************
2. Cambiar a FlowLayout.
Agregar un control
RequiredFieldValidator
Valor
ControlToValidate
TextBox1
ErrorMessage
Text
Agregar un control
RangeValidator
usuario
23
Valor
ControlToValidate
TextBox1
ErrorMessage
Text
MaximumValue
100
MinimumValue
16
Type
Entero
24
usuario
usuario
25
ClientValidationFunction
OnServerValidate
Validar con:
z
Frmula
Datos
Objetos COM
Servicio Web
Cdigo de ejemplo
***************************** use******************************
Introduccin
ClientValidationFunction
La propiedad ClientValidationFunction es el script que deseamos que
ejecute el control CustomValidator en el lado del cliente. Debido a que
escribimos nuestro propio script en el cliente, es importante comprobar que
existe coherencia lgica con el cdigo del lado del servidor.
OnServerValidate
La propiedad OnServerValidate es el script que deseamos que ejecute el
control CustomValidator en el lado del servidor. Debido a que escribimos
nuestro propio cdigo en el servidor, es importante comprobar que existe
coherencia lgica con el script del lado del cliente.
26
Ejemplo
usuario
C#
usuario
27
Probar el resultado
***************************** use******************************
Introduccin
Integer = args.Value
2 = 0 Then
= True
= False
28
C#
usuario
El procedimiento de eventos del lado del servidor que Visual Studio .NET
ha creado automticamente debera tener el nombre
CustomValidator1_ServerValidate, y dos parmetros: source (tipo
Object) y args (tipo ServerValidateEventArgs).
Escribir el script del
lado del cliente
Probar el resultado
usuario
29
30
usuario
***************************** use******************************
Introduccin
Objetivos de la leccin
usuario
31
Message.Text
Message.Text == "Page
"Page is
is Valid!";
Valid!";
//
// Perform
Perform database
database updates
updates or
or other
other logic
logic here
here
}}
}}
***************************** use******************************
Introduccin
.NET permite verificar que todos los controles de una pgina son vlidos antes
de que realicen alguna accin. Esta verificacin puede llevarse a cabo en el
cliente o en el servidor, dependiendo del navegador que se est utilizando. La
verificacin del lado del cliente se realiza con el control ValidationSummary,
mientras que la verificacin del lado del servidor se realiza con la propiedad
Page.IsValid.
Uso de la propiedad
Page.IsValid
Para determinar si todos los controles de validacin de una pgina son vlidos,
comprobamos la propiedad IsValid de la pgina en tiempo de ejecucin. La
propiedad IsValid se vincula a los valores de todos los controles de validacin
que se encuentran en la pgina (utilizando un AND lgico). Si algn control de
validacin no es vlido, la propiedad IsValid devuelve False. Esta propiedad
proporciona una forma sencilla de determinar si los controles de entrada de
datos en el formulario Web Form son vlidos y si el formulario Web Form est
preparado para seguir con la lgica de negocio.
Los controles de validacin verifican las entradas del usuario, establecen un
estado de error y producen mensajes de error. Sin embargo, los controles de
validacin no cambian el flujo de procesamiento de pginas. Por ejemplo, los
controles de validacin no evitan nuestro cdigo si detectan un error en los
datos introducidos por el usuario. En lugar de ello, probamos el estado de los
controles en nuestro cdigo antes de realizar lgica especfica de aplicacin. Si
detectamos un error, evitamos que nuestro cdigo se ejecute; la pgina seguir
procesndose y se devuelve al usuario con mensajes de error.
Nota La informacin de validacin no est disponible durante la inicializacin
de una pgina o durante la fase de carga. Para obtener informacin sobre los
estados de pgina, examinar Estados de procesamiento de pginas de
formularios Web Forms en la documentacin de Visual Studio .NET.
32
usuario
Ejemplo
C#
usuario
33
***************************** use******************************
Introduccin
Muestra mensajes de
texto y de error
34
Ejemplo
usuario
usuario
***************************** use******************************
Introduccin
Agregar un control
Validation
Summary
C#
If Page.IsValid Then
lblMessage.Text = "Page is valid!"
End If
35
36
usuario
if (Page.IsValid)
{
lblMessage.Text = "Page is valid!";
}