Solo JavaScript validazione su modulo AJAX invio

2

Ho rimuginato questa domanda per alcuni giorni nella mia testa e non riesco a trovare una risposta solida.
Comprendiamo che la convalida del lato client per i moduli non è sufficiente, perché puoi disattivare facilmente JavaScript. Ma che dire di un modulo inviato semplicemente tramite AJAX (ho un modulo di registrazione che voglio essere inviato tramite AJAX). Se disattivi JavaScript, non sarai comunque in grado di inviare il modulo, quindi non sarebbe giusto fare tutta la tua validazione sul frontend?

    
posta Adam McGurk 24.01.2018 - 22:24
fonte

4 risposte

5

La risposta è "no", come altri sottolineano, ma è molto importante capire perché . Il modo migliore, penso, è prendere il browser web (ciò che segue presuppone Chrome), indirizzarlo alla tua pagina web e right click->inspect element . Seleziona la scheda "rete". Ora invia il tuo contributo. Una o più voci appariranno nella vista. Vedrai che c'è una chiamata POST con intestazioni e un payload ecc.

Quella chiamata POST è quella che il tuo server vedrà mai. Tutto ciò che sa sulla richiesta è mostrato in quella rete. Ora right click->Copy->Copy as cURL (cmd o bash come desideri). Apri un editor di testo e incolla. Quello che vedrai è un'istruzione della riga di comando cURL installata. Se hai cURL (probabilmente dovresti ottenerlo se non lo fai) puoi eseguire questo comando. Se si guardano i registri del server, apparirà esattamente come quello proveniente dal browser.

Ora vai al file di testo e modifica alcuni dati del payload in qualcosa di non valido. Esegui quel comando e guarda i log del tuo server. Dovrebbe essere immediatamente evidente il motivo per cui deve fare la convalida lato server. È la convalida sul lato client che è opzionale.

    
risposta data 24.01.2018 - 23:48
fonte
1

La convalida sul lato client aiuta a migliorare l'usabilità. Ad esempio puoi mostrare un bel messaggio che l'utente ha sbagliato e farlo molto velocemente. Perché il cliente conosce già le informazioni e non ha bisogno di effettuare richieste.

Consigli di design

Hai bisogno di 2 convalide. Sul client e uno sul back-end. Il back-end può verificare se i dati sono veramente corretti e validi prima di utilizzarli / archiviarli.

Keep the client side validation and add also an backend validation.

Se non convalidi ancora i dati sul back-end, creerai una grande perdita nella tua applicazione. @JimmyJames ha già spiegato come.

    
risposta data 25.01.2018 - 16:11
fonte
0

No.

Qualsiasi codice in esecuzione su un computer che non controlli è sospetto, per definizione.

Dal server, non puoi nemmeno garantire che stai parlando con un browser & non un codice personalizzato che sta fingendo di essere un browser.

È una buona idea convalidare l'input dell'utente sul client per comodità in modo da poter fornire un feedback immediato all'utente, ma devi comunque convalidarlo sul tuo server.

    
risposta data 24.01.2018 - 23:05
fonte
0

È banale che un utente acquisisca la richiesta AJAX dopo che i dati sono stati convalidati tramite JavaScript e li manipola prima di inviarli al server.

Oppure registra la richiesta e riproducila a piacere, ignorando completamente l'interfaccia utente.

O qualsiasi numero di altri scenari fuori dal tuo controllo (del tuo server).

Il punto è che non ci si dovrebbe mai fidare che l'input del client sia accettabile così com'è. Devi sempre convalidare sul server.

    
risposta data 24.01.2018 - 23:16
fonte

Leggi altre domande sui tag