Pregunta Las mejores prácticas para la validación de entrada en ASP.NET?


¿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?

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?


9
2017-07-03 19:20


origen


Respuestas:


Siempre realice 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.


11
2017-07-03 19:22



¡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 martillar tu aplicación para cagar. Siempre ponga la validación del lado del servidor en ... no es tan difícil

Formularios web

''# 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 la validación del lado del servidor esté funcionando, continúe y agregue la validación del lado del cliente. Hará que la experiencia sea mejor para el usuario


4
2017-07-03 19:36



Una cosa que recomendaría es usar FluentValidation, xVal y JQuery juntos para realizar la validación del lado del cliente y del servidor basado en las mismas reglas.

FluentValidation es un marco basado en reglas que valida los 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 los 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


4
2017-07-03 22:11



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 completado los campos obligatorios en un formulario, es poco probable que exista un riesgo de seguridad.


2
2017-07-03 19:23



Es necesario utilizar al menos la validación del lado del servidor, ya que la validación del lado del clie puede evitarse 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.


1
2017-07-03 19:33



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

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

No, también debes 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.


1
2017-07-03 19:38