2010-07-03 20 views
9

¿Cuál es la práctica común de validación de entrada? En otras palabras, ¿verifica la validación de entrada en el lado del cliente, en el lado del servidor o en ambos lados?¿Mejores prácticas para validación de entrada en ASP.NET?

Además, si el rendimiento es crucial para mí, ¿la validación de entrada del lado del cliente sería suficiente para mi sitio web sin presentar ningún riesgo de seguridad?

Respuesta

11

Realice siempre al menos la validación del lado del servidor. Si desea mejorar la experiencia de los usuarios, la validación del lado del cliente podría ser agradable. También le permite evitar solicitudes innecesarias al servidor.

Solo la validación del lado del cliente no es suficiente y se puede eludir fácilmente al deshabilitar JavaScript, por ejemplo.

Le recomendaría que siempre comience agregando validación del lado del servidor y una vez que lo haya probado, podría habilitar la validación del lado del cliente.

2

Generalmente en ambos lados. El lado del cliente uno puede eludirse fácilmente, ya sea intencionalmente o inocentemente (con la prevalencia de noscript), pero vale la pena tenerlo por motivos de usabilidad.

En cuanto a si presenta un riesgo de seguridad. ¿Para qué está usando la entrada del usuario y cuál es la naturaleza actual de su validación?

Si solo está comprobando que alguien ha rellenado campos obligatorios de una forma, es probable que no exista un riesgo de seguridad.

1

Es necesario utilizar al menos la validación del lado del servidor, ya que la validación del lado del clie se puede omitir fácilmente.

Si desea tener una experiencia de usuario btter, use la validación del lado del cliente también. Esto también aumenta el rendimiento, ya que reduce la cantidad de solicitudes HTTP al servidor, ya que los formularios no válidos no se enviarán al servidor.

4

¡NO CONFÍE EN LA VALIDACIÓN DEL LADO DEL CLIENTE!
Está ahí para el usuario honesto. El usuario deshonesto puede sortearlo en poco tiempo.

Si apago Javascript, puedo hacer que tu aplicación se cague. Siempre poner la validación del lado del servidor en ... no es tan difícil

Web Forms

''# VB 
If Page.isValid Then 
    ''# submit your data 
End If 

// C# 
if(Page.isValid) { 
    // submit your data 
} 

MVC

''# VB 
If ModelState.IsValid Then 
    ''# submit your data 
End If 

// C# 
if(ModelState.IsValid) { 
    // submit your data 
} 

Una vez que su validación del lado del servidor está funcionando, y luego seguir adelante y añadir la validación del lado del cliente. Hará que la experiencia sea mejor para el usuario

1

Lo más común es utilizar la validación del lado del cliente y del servidor.

¿Sería suficiente la validación de entrada del lado del cliente para mi sitio web sin presentar ningún riesgo de seguridad?

No, también debe usar la validación del lado del servidor. Es bastante simple eliminar la validación del cliente con (por ejemplo) Firebug. Obviamente, después de eliminar la validación del lado del cliente, el malvado puede enviar cualquier información al servidor. Por lo tanto, la validación del servidor también es muy necesaria.

4

Una cosa que recomendaría es el uso de FluentValidation, xVal y jQuery juntos para realizar la validación del cliente y del lado del servidor en base a las mismas reglas.

FluentValidation es un marco basado en reglas que valida objetos .net en el lado del servidor. Viene con un proveedor de reglas para xVal, que es otro marco que le permite vincular su elección de marcos de validación del lado del servidor y del lado del cliente. Es compatible con la generación de validadores JQuery en el lado del cliente

Cuestiones relacionadas