Se la sicurezza è basata su "nella mia applicazione, il caso d'uso comune X non accadrà mai", probabilmente fallirà.
Prima di tutto, l'igienizzazione degli input non è l'approccio corretto per XSS, la codifica dipendente dal contesto è.
Il tuo approccio è anche eccessivamente complesso. Perché filtri lo spazio e +
? Perché sostituire <
e >
con _
, ma gli altri con spazio?
Il tuo approccio non è molto user-friendly. <
e >
sono sempre utilizzati legittimamente, come +
.
Tutto ciò che viene detto, no, in un semplice contesto HTML - non in un contesto di attributo HTML, contesto CSS o JS, ecc. - XSS non può aver luogo senza <
e >
, quindi non ci sarebbe modo di aggirare il filtro. In altri contesti, XSS può ancora accadere. Anche se al momento non inserisci l'input dell'utente in altri contesti, tu o un altro sviluppatore lo farai in futuro. E supporteranno che anche una funzione chiamata tep_sanitize_string
sarà sicura anche qui.