2010-07-03 30 views
9

Quelle est la pratique courante de la validation des entrées? En d'autres termes, vérifiez-vous la validation des entrées côté client, côté serveur ou des deux côtés?Meilleures pratiques pour la validation des entrées dans ASP.NET?

En outre, si la performance est cruciale pour moi, est-ce que la validation des entrées côté client suffirait pour mon site web sans présenter de risques de sécurité?

Répondre

11

Effectuez toujours au moins la validation côté serveur. Si vous voulez améliorer l'expérience des utilisateurs, la validation côté client pourrait être agréable. Cela vous permet également d'éviter les requêtes inutiles au serveur.

Seule la validation côté client n'est pas suffisante et peut être facilement contournée en désactivant le javascript par exemple.

Je vous recommande de toujours commencer en ajoutant la validation côté serveur et une fois que vous l'avez testé, vous pouvez activer la validation côté client.

2

Généralement des deux côtés. Le côté client peut facilement être contourné intentionnellement ou innocemment (avec la prévalence de noscript) mais vaut la peine d'avoir des raisons d'utilisabilité.

Indique s'il présente un risque de sécurité. À quoi utilisez-vous l'entrée de l'utilisateur et quelle est la nature actuelle de votre validation?

Si vous vérifiez simplement que quelqu'un a rempli des champs obligatoires dans un formulaire, il est peut-être improbable qu'il y ait un risque de sécurité.

1

Il est nécessaire d'utiliser au moins la validation côté serveur, car la validation côté client peut être facilement contournée.

Si vous souhaitez bénéficier d'une expérience utilisateur btter, utilisez également la validation côté client. Cela augmente également les performances, car il réduit le nombre de requêtes HTTP sur le serveur, car les formulaires non valides ne seront pas envoyés au serveur.

4

NE VOUS FIEZ PAS À LA VALIDATION DU CLIENT !!!
C'est juste là pour l'utilisateur honnête. L'utilisateur malhonnête peut le contourner en un rien de temps.

Si j'arrête Javascript, je peux marteler votre application à la merde. validation côté serveur toujours mis en ... il est pas difficile

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 
} 

Une fois que votre validation côté serveur fonctionne, alors allez-y et ajoutez la validation côté client. Cela améliorera l'expérience de l'utilisateur

1

La plus courante consiste à utiliser à la fois la validation côté client et côté serveur.

seule la validation d'entrée côté client serait-elle suffisante pour mon site Web sans présenter de risques de sécurité?

Non, vous devez également utiliser la validation côté serveur. Il est assez simple de supprimer la validation du client avec (par exemple) firebug. Évidemment, après la suppression de la validation côté client, le malfaiteur peut envoyer des données au serveur. La validation côté serveur est donc également indispensable.

4

Une chose que je recommande est d'utiliser FluentValidation, xVal et JQuery ensemble pour effectuer la validation côté client et serveur sur la base des mêmes règles.

FluentValidation est un cadre basé sur des règles qui valide les objets .net côté serveur. Il est fourni avec un fournisseur de règles pour xVal, un autre framework qui vous permet de lier votre choix de framework de validation côté client et côté client. Il supporte la génération de valideurs JQuery côté client