2010-11-02 23 views

Respuesta

8

Porque la validación del lado del cliente puede ser subvertida.

Por ejemplo, en la web, si usa javascript para la validación, es muy fácil desactivar javascript o cambiar la forma en que funciona con herramientas como FireBug.

Evento con otros métodos cliente/servidor, es posible que el enlace de datos se subvierte y los datos "validados" se pueden cambiar en el camino hacia el servidor (Man In The Middle ataque).

En general, la máxima "nunca confíes en el cliente" es la razón por la que siempre debes validar en el servidor.

Puede preguntar en ese caso, ¿por qué validar en el cliente? Para proporcionar retroalimentación inmediata.

3

El usuario puede modificar la validación javascript localmente (guardar la página y hacer cualquier cosa con ella) o javascript se puede desactivar en el navegador. Entonces, en este caso, la validación del lado del cliente es inútil. Por lo tanto, también debe verificar en el servidor

+0

Así que la validación del lado del cliente es más beneficiosa para el usuario para dirigirlos en la dirección correcta más para la protección de datos? – eaglei22

2

La validación del lado del cliente le da al usuario un feedback inmediato sin tener que esperar a que la página se cargue. Sin embargo, si el cliente ha desactivado las secuencias de comandos del lado del cliente (por ejemplo, JavaScript está deshabilitado), la validación no se activará, razón por la cual también necesita que el servidor verifique los valores.

+0

¿Qué pasa cuando se usa Ajax? ¿Es mejor en este caso confiar en la información que vuelve del servidor, o un desarrollador st? ¿Usaré Javascript/JQuery para evitar una llamada ajax innecesariamente? ¿O realmente no importa siempre que se valide el servidor? – eaglei22

2

El lado del cliente eliminará (en teoría) la mayoría de los problemas de validación antes de llegar al servidor (aunque esto no siempre ocurre cuando JavaScript está desactivado/editado, etc.). Esto eliminará cualquier "tensión"/procesamiento innecesario del servidor al colocar la responsabilidad en el dispositivo cliente para realizar la validación.

El lado del servidor detectará los problemas de validación que, por alguna razón, no fueron detectados por la validación del lado del cliente.

2

La validación del lado del cliente es un plus, pero no es necesario. DEBE usar la validación del lado del servidor (ssv) porque cuando se acepta información del usuario, siempre se debe tratar como "hostil". Si esos datos también se alimentan en una base de datos, ssv es su última línea de defensa porque no desea datos no deseados o no válidos en su base de datos.

La validación del lado del cliente no es a prueba de balas, y por lo tanto si algo se valida en el lado del cliente, eso no significa que será válido cuando llegue a su servidor.

2

Client Side Validation se utiliza para la conformación siguiente
1) de los datos a la longitud y formato limitaciones
2) indicación instantánea o retroalimentación al usuario

el lado del servidor de validación
1) validaciones más avanzados en contra de la lógica comercial
2) verifique cualquier cambio en el criterio. por ejemplo, usted solicita un libro de amazon y justo cuando realiza la compra obtiene una indicación de que el libro está agotado porque alguien más lo habría comprado momentos antes de
3) Verifique si el usuario previsto ha publicado los datos. Las cosas del lado del cliente como cookies y javascript pueden ser manipuladas, por lo tanto, el servidor no necesita autenticarse y corroborar los datos que llegan.

Por lo tanto, se requiere la validación del lado del servidor como la línea principal de defensa contra datos maliciosos y también para verificar los datos contra la lógica comercial avanzada.

2

El propósito de la validación en tiempo real del lado del cliente (es decir, cuando el usuario se mueve de un campo a otro en lugar de que el usuario toque ENVIAR) es para dar feedback al usuario lo antes posible. Si el número de la Seguridad Social, por ejemplo, requiere 9 dígitos, y el usuario ha escrito 8, no desea esperar hasta que el usuario haya completado el resto del formulario y presione ENVIAR para señalar el error, incluso si la validación ocurre en el lado del cliente. Esperar hasta después de ENVIAR para validar el lado del cliente es casi inútil; todo lo que hace es ahorrar su servidor y su ancho de banda. Señalar errores ya que están hechos generalmente resulta en una mayor tasa de finalización del formulario porque es una experiencia más simple para el usuario en general - no habrá una lista de errores: "Corrija todos los errores a continuación". Pero aún necesita tener una validación del lado del servidor para garantizar la integridad de los datos en cualquier caso. El gorila del club nocturno está de pie frente a la puerta del club, no en el estacionamiento al otro lado de la calle.

+0

+1 para estacionamiento, ja, ja – Susie

0

Si tiene una aplicación con varias tablas en la base de datos, su validación del lado del servidor puede ser simplemente un conjunto de restricciones (la parte del diseño de la tabla de datos). Podemos pensar que no tenemos ninguna validación por parte del servidor, porque no es una capa de servidor intermedio, sino una capa de DB.

Entonces podemos decir, teniendo ventaja de la base de datos relacional - basada en Integridad (sabemos que nuestra estructura de datos es segura). En la mayoría de los casos, podemos usar solo la validación del lado del cliente para proporcionarle a un cliente una retroalimentación de la instancia a sus acciones. Puede que no sea un problema crítico no tener validación adicional en la capa del lado del servidor, en controladores en cualquier código del lado del servidor.

Por lo tanto, podemos decir que para algunos/la mayoría de los casos, podemos usar solo la validación del lado del cliente. La validación del lado del servidor es - caso especial como: para verificar si algo ya fue comprado, cuando el cliente envía un formulario de compra.

No es una mala idea no repetirlo con la validación en ambos lados.

Por supuesto que hay aplicaciones que requieren una gran cantidad de atenciones a sus datos, entonces no sólo la validación del lado del servidor es importante (como parte de la seguridad modelo de negocio, pero la cobertura de pruebas para la mayoría de los casos de uso -. Para la entrada del cliente

Pero si solo es un sitio con varias formas ... Entonces creo que las restricciones de la base de datos y la validación del lado del cliente son una buena opción.

Cuestiones relacionadas