Ho avuto una discussione (piuttosto accesa) con il mio collega di oggi su quali caratteri la nostra applicazione dovrebbe accettare. Ciò è stato suggerito dalla scoperta che puoi inserire qualsiasi cosa nella casella di ricerca e l'applicazione eseguirà doverosamente una ricerca per quella stringa. Tuttavia questo vale anche per tutte le caselle di testo nell'applicazione, non solo per la casella di ricerca.
Il mio collega è del parere che la migliore pratica (da un punto di vista della sicurezza) consiste nel limitare i caratteri consentiti ad alcune lettere, cifre e un sottoinsieme di simboli. Ciò impedisce all'utente di inserire tutti i tipi di caratteri di controllo Unicode non stampabili e quant'altro.
D'altra parte sono dell'opinione che ciò infastidirà solo gli utenti e non offrirà alcuna sicurezza aggiuntiva. Ritengo che la migliore pratica sia quella di rendere la tua applicazione accettabile qualsiasi , e quindi utilizzare le funzioni di codifica appropriate (e le query parametrizzate, se disponibili) per assicurarsi che la stringa immessa passi attraverso non modificata e venga visualizzata / usato come inserito. Se l'utente inserisce la spazzatura, vedrà la spazzatura, ma il sistema funzionerà correttamente.
Qual è la migliore pratica del settore qui?
Aggiunto: Sembra che non sia stato molto chiaro. La domanda riguarda lato server e l'assunto è che tutte le codifiche / escaping corrette siano attive quando si utilizza la stringa (ad esempio utilizzando parametri per SQL, HtmlEncode per l'output in HTML, ecc.). Detto questo, ha ancora senso limitare i caratteri consentiti che arrivano dal client?