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.