2010-07-03 19 views
9

Qual è la pratica comune della convalida dell'input? In altre parole, verifichi la convalida dell'input sul lato client, sul lato server o su entrambi i lati?Le migliori pratiche per la convalida dell'input in ASP.NET?

Inoltre, se le prestazioni sono fondamentali per me, sarebbe sufficiente che la convalida dell'input sul lato client sia sufficiente per il mio sito Web senza presentare rischi per la sicurezza?

risposta

11

Eseguire sempre almeno la convalida lato server. Se vuoi migliorare l'esperienza degli utenti, la validazione lato client potrebbe essere utile. Permette anche di evitare richieste inutili al server.

Solo la convalida lato client non è sufficiente e può essere facilmente aggirata disabilitando javascript per esempio.

Si consiglia di iniziare sempre aggiungendo la convalida lato server e una volta verificato, è possibile abilitare la convalida lato client.

2

Generalmente su entrambi i lati. Il lato client può essere facilmente aggirato intenzionalmente o innocentemente (con la prevalenza di noscript), ma vale la pena avere per ragioni di usabilità.

Per quanto riguarda se presenta un rischio per la sicurezza. A cosa stai utilizzando l'input dell'utente e qual è la natura attuale della tua convalida?

Se si verifica semplicemente che qualcuno abbia compilato campi obbligatori in un modulo, è improbabile che ci sia un rischio per la sicurezza.

1

È necessario utilizzarlo almeno per la convalida lato server, poiché la convalida del clie-side può essere facilmente aggirata.

Se si desidera disporre di una maggiore esperienza utente, utilizzare anche la convalida sul lato client. Ciò aumenta anche le prestazioni, poiché riduce il numero di richieste HTTP al server, perché i moduli non validi non verranno inviati al server.

4

NON AFFIDARE LA VALIDAZIONE DEL CLIENTE DEL CLIENTE !!!
È solo lì per l'utente onesto. L'utente disonesto può aggirarlo in un attimo.

Se spengo Javascript, riesco a martellare l'app in cacata. Sempre messo validazione lato server ... non è poi così 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 
} 

Una volta che il validazione lato server funziona, quindi andare avanti e aggiungere la validazione lato client. Renderà l'esperienza migliore per l'utente

1

Più comune sta usando sia la convalida lato client che lato server.

solo la convalida dell'input lato client è sufficiente per il mio sito Web senza presentare rischi per la sicurezza?

No, si dovrebbe usare anche la validazione lato server. È abbastanza semplice rimuovere la convalida del client con (ad esempio) firebug. Ovviamente dopo aver rimosso il validatore del lato client, il malfattore può inviare qualsiasi dato al server. Quindi è fortemente necessaria anche la validazione lato server.

4

Una cosa che mi sento di raccomandare sta utilizzando FluentValidation, xVal e JQuery insieme per eseguire client e lato server di convalida in base alle stesse regole.

FluentValidation è un framework basato su regole che convalida gli oggetti .net sul lato server. Viene fornito con un provider di regole per xVal, che è un altro framework che consente di collegare la scelta dei framework di convalida lato server e lato client. Supporta la generazione di validatori JQuery sul lato client

Problemi correlati