La convalida del server è necessaria con i validatori lato client?

6

Recentemente ho creato un'app Web .net che utilizzava oltre 200 validatori personalizzati su una pagina. Ho scritto il codice sia per ClientValidationFunction che OnServerValidate che risulta in una tonnellata di codice ripetitivo.

Le mie istruzioni sql sono parametrizzate, ho delle funzioni che estraggono i dati dai campi di input e li convalidano prima di passare alle istruzioni sql o alle stored procedure. E il javascript convalida i campi prima dell'invio della pagina. Quindi, in sostanza, i dati sono puliti e validi prima che colpiscano anche OnServerValidate e puliscano comunque dopo a causa dei suddetti passaggi.

Questo mi fa mettere in dubbio, è veramente necessario OnServerValidate quando convalido sul clientside?

Modifica

Il mio OnServerValidate s fa cose semplici come assicurarsi che un pattern di salto sia applicato o che appaia un breve in un testo (che viene comunque applicato con il mio codice che estrae i dati dai campi di testo in parametri cioè GetShort ()). E questi sono posti nelle indagini dei pazienti, che per la maggior parte del tempo vengono compilati dai membri dello staff.

Quindi sembra che se non avessi il OnServerValidate per questi controlli di base e solo il lato client le seguenti situazioni sono:

  1. Un utente disattiva javascript e non può inviare il modulo, che è previsto come pulsanti sono guidati da JavaScript per i postback.
  2. Un utente costringe un post. Che se questo si verifica il mio OnServerValidate farebbe jack per fermare qualsiasi cosa stiano cercando di fare da quando è solo guardando i modelli di salto, o sarebbe?

La situazione 2 è dove mi sto perdendo. Sembra che l'utente che impone un post sia più che probabile che non venga catturato da questi semplici OnServerValidate s

    
posta peroija 22.10.2012 - 14:18
fonte

2 risposte

16

Ne hai bisogno perché il cliente può decidere di consentire javascript nei loro browser. Dovresti anche considerare quelle persone che vogliono rompere il tuo software. Esistono molti strumenti che possono produrre post e inviarli al tuo sito web senza aver utilizzato il front-end.

La convalida lato client è piacevole per l'utente, ma il server non dovrebbe mai fidarsi mai dei dati che gli vengono inviati.

- Aggiornamento -

Se leggo correttamente la tua modifica, sembra che OnServerValidate s stia duplicando la funzionalità di convalida già presente sul server. Poiché questo è il caso, non dovresti aver bisogno di OnServerValidates .

Inoltre, sei corretto sul fatto che se un utente produce un post per il tuo servizio, non attiverà il OnServerValidates in modo che tu stia meglio mantenendo quel tipo di convalida dove lo hai attualmente sul server.

    
risposta data 22.10.2012 - 14:24
fonte
3

Se avessi intenzione di saltare la convalida, sarei molto più propenso a farlo sul client che sul server.

Il problema con il saltare da qualche parte è che qualcuno potrebbe aprire un buco di sicurezza assumendo che venga eseguita la convalida quando non lo è.

    
risposta data 22.10.2012 - 23:06
fonte

Leggi altre domande sui tag