210 votes

JavaScript : client-side vs validation côté serveur

Qui est mieux à faire côté client ou côté serveur de validation?

Dans notre situation, nous sommes en utilisant

  • jQuery et MVC.
  • Les données JSON à passer entre notre point de Vue et le Contrôleur.

Beaucoup de la validation de la je fais, c'est de la validation des données que les utilisateurs peuvent entrer en elle. Pour exemple, j'utilise l' keypress événement pour prévenir les lettres dans une zone de texte, définir un nombre maximum de caractères et qu'un nombre est dans une gamme.

Je suppose que la meilleure question serait, existe-il des avantages au serveur de validation côté client côté?


Génial les réponses de tout le monde. Le site web que nous avons est protégé par mot de passe et pour une petite base d'utilisateurs(<50). Si elles ne sont pas en cours d'exécution JavaScript, nous allons envoyer des ninjas. Mais si nous avons été la conception d'un site pour tout le monde, je serais d'accord pour faire une validation sur les deux côtés.

389voto

Nathan Long Points 30303

Comme d'autres l'ont dit, vous devriez faire les deux. Voici pourquoi:

Côté Client

Vous souhaitez valider la saisie sur le côté client d'abord parce que vous pouvez donner un meilleur retour d'information pour l'utilisateur moyen. Par exemple, si la saisie d'une adresse e-mail invalide et de passer à la zone suivante, vous pouvez afficher un message d'erreur immédiatement. De cette façon, l'utilisateur peut corriger tous les champs avant de soumettre le formulaire.

Si vous ne valide sur le serveur, ils doivent soumettre le formulaire, un message d'erreur, et d'essayer de traquer le problème.

(Cette douleur peut être atténuée par la prise de "collant" les formes où le serveur se souvient de ce qui a été entré dans le champ et le remplit à nouveau, mais la validation côté client est encore plus rapide.)

Côté Serveur

Vous souhaitez valider sur le côté serveur, car vous pouvez vous protéger contre l'utilisateur malveillant, qui peut facilement contourner votre JavaScript et soumettre dangereux d'entrée pour le serveur.

Il est très dangereux de faire confiance à votre INTERFACE utilisateur. Non seulement ils peuvent abuser de votre INTERFACE utilisateur, mais ils ne peuvent l'être à l'aide de votre INTERFACE utilisateur à tous, ou même d'un navigateur. Que faire si l'utilisateur édite manuellement l'URL, ou s'exécute leurs propres Javascript, ou tweaks leurs requêtes HTTP avec un autre outil? Si on envoie des requêtes HTTP à partir de roulage, par exemple?

Ne permettant pas pour qui n'est pas seulement naïf à partir d'un point de vue sécurité, mais aussi non-standard: un client doit être autorisé à envoyer des HTTP quels que soient les moyens qu'ils souhaitent, et vous devez répondre correctement. Qui inclut la validation.

Côté serveur de validation est également important pour la compatibilité - pas tous les utilisateurs ont le JavaScript.

87voto

Vinko Vrsalovic Points 116138

Oui, validation côté client peut être totalement contournée, toujours. Vous devez faire, côté client pour fournir une meilleure expérience utilisateur, tant côté serveur pour s’assurer que l’entrée que vous obtenez est effectivement validée et pas juste censé être validée par le client.

46voto

Toby Hede Points 22128

Je vais me contenter de le répéter, parce qu’il est très important :

Toujours valider sur le serveur

et ajouter JavaScript pour utilisateur-réactivité.

34voto

Rob Points 24505

L'avantage de le faire côté serveur de validation sur la validation côté client que côté client, la validation peut être contournée/manipulation:

  • L'utilisateur final pourrait avoir javascript désactivé
  • Les données peuvent être envoyées directement à votre serveur par quelqu'un qui n'est même pas à l'aide de votre site, avec une application personnalisée, conçue pour faire
  • Une erreur Javascript sur votre page (causés par un certain nombre de choses) pourrait entraîner dans certains, mais pas tous, de votre validation de course

À court toujours, toujours valider côté serveur et d'examiner ensuite la validation côté client comme un "extra" pour améliorer l'expérience des utilisateurs finaux.

19voto

Peter Boughton Points 49510

Vous devez toujours valider sur le serveur.

Ayant également la validation sur le client est agréable pour les utilisateurs, mais n’est pas totalement sécurisée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X