È mai sicuro saltare le convalide sul lato server?

3

Sto lavorando su un'app Web con un modulo di iscrizione come di seguito. Le convalide vengono tutte eseguite lato client utilizzando link .

Sono ben consapevole che le convalide sul lato client possono essere ignorate, ma al momento non mi sono preoccupato di implementare le convalide sul lato server poiché sono molto più dolorose da implementare e richiedono logica procedurale nel codice HTML e così via.

Il mio ragionamento è che qui non c'è nulla che richieda convalide sul lato server, nessun caricamento di file o dati di grande importanza che devono assolutamente essere corretti. Se l'utente fornisce l'indirizzo email errato, non riceverà mai l'e-mail di conferma, se il nome è errato, insignificante e così via.

L'unica ragione per cui le convalide del lato client verrebbero ignorate se l'utente sceglie di disabilitare javascript nel qual caso un tag noscript può essere usato per dire loro che l'app non funzionerà senza javascript.

Ci sono problemi di sicurezza con quello che sto facendo?

    
posta Lee 26.01.2014 - 20:33
fonte

4 risposte

6

La risposta breve è sì, dovresti sempre implementare convalide lato server per prevenire gli attacchi. Non ci si può mai fidare delle applicazioni lato client poiché qualsiasi cosa installata localmente può essere sovvertita da un utente malintenzionato. Possono anche vedere cosa stai cercando, il che fornisce loro ancora più informazioni con cui attaccare il tuo server.

Molti sfruttano vulnerabilità mirate nei sistemi operativi o nei servizi di supporto sottostanti, ad esempio overflow del buffer, iniezioni SQL e molti altri. I controlli lato server sono l'unico modo per evitare che questi tipi di difetti vengano sfruttati, verificando che l'input sia entro i limiti e nel formato previsto. Senza controlli (e messaggi di log che avvisano su input sospetti) non avrai alcun avviso che qualcuno stia bersagliando il tuo sistema, potresti essere hackerato e non saperlo mai.

Anche se non si sono mai scelti come target i controlli a lato dei server aggiungono un altro livello di sicurezza, se tu o qualcun altro apporti una modifica all'applicazione client che interrompe qualcosa, i controlli lato server possono farti risparmiare un'enorme quantità di pulizia. Vale bene il tuo tempo.

    
risposta data 26.01.2014 - 20:46
fonte
3

Potrebbe essere sicuro, ma probabilmente no.

Dipende da perché stai facendo la validazione per cominciare. In particolare: Che cosa fai se vengono inviati dati non validi?

Se esegui la convalida sul lato server, ti garantiamo che solo i dati validi arrivano alla tua app. Ma se si esegue la convalida sul lato client, non si ha tale garanzia.

Esistono dozzine di modi per aggirare la convalida lato client, non tutti malevoli. Ma ovviamente l'intento malevolo è grande. Se una qualsiasi delle tue convalide influisce in qualche modo sul funzionamento della tua app, la convalida sul lato server non è facoltativa.

Quindi, ad esempio, controllare se la quantità in un carrello acquisti è un numero: deve essere convalidata lato server. Verifica se il campo di verifica della password corrisponde all'originale: non è così importante se stai ignorando comunque il campo di verifica sul server.

    
risposta data 27.01.2014 - 19:08
fonte
1

Dipende tutto da cosa stai facendo con i dati utente.

Se si desidera salvare l'input dell'utente in un database, ad esempio, è necessario eseguire correttamente il neutral i dati che entrano nel database, altrimenti il tuo database rischia di essere distrutto, o comunque violato, dall'input dell'utente progettato per modificare le tue query SQL.

O per un altro esempio, se invii un'email a un indirizzo email fornito dall'utente, ti verrà fatto hackerare da spammer che utilizzeranno il tuo sito per inviare importi illimitati di spam agli utenti di loro scelta.

I cattivi pensano fuori dagli schemi. Devi farlo anche tu.

    
risposta data 28.01.2014 - 01:50
fonte
1

Sei sicuro di saltare la convalida sul lato server per quel modulo che ti consente di troncare input eccessivamente grandi, utilizzare query parametrizzate e codificare i dati in html se l'hai mai fatto.

La risposta accettata afferma che "è necessario implementare sempre convalide lato server per prevenire attacchi". Per questo particolare modulo, quali validazioni devono essere implementate che sarebbero più sicure e più affidabili di sanitizzazione (troncamento, query parametrizzate e codifica html)?

    
risposta data 15.11.2014 - 04:22
fonte

Leggi altre domande sui tag