È un principio importante, ma non l'unico.
Diciamo che stai scrivendo un processore di pagamenti, in particolare funzioni per inviare denaro. Il codice di back-end si aspetta determinati parametri per una transazione, forse il numero dell'account di origine (memorizzato in un campo html nascosto), il numero dell'account di destinazione e un importo in dollari. Quando viene chiamata questa funzione, genera il numero di conto in una query SQL per ottenere i dettagli dell'account. Le informazioni sull'account di questa ricerca vengono inviate al browser su una pagina di conferma.
Dove può l'input dell'utente causare problemi qui? Prima di tutto, cosa succede se l'utente inserisce un importo negativo in dollari? Cosa succede se l'utente cambia il campo nascosto in un numero di account che non è il loro? Cosa fare se il campo del numero di conto contiene comandi e comandi di escape (SQL injection) o codice JavaScript (XSS)? Questo è uno scenarioio molto semplice, ma c'è così tanto che può andare storto. Troppa fiducia nell'utente può consentire l'elusione della logica aziendale o dei controlli di accesso previsti, nonché l'esposizione a vulnerabilità di iniezione.
Non fidarti mai dell'utente; non c'è nulla sul lato client che possa impedire loro di immettere input pericolosi e inaspettati. Convalidare sempre l'input ed eseguire controlli sul lato server su tutto.