Potrebbe essere sufficiente e potrebbe non esserlo, ma non è sicuramente una buona idea.
Can a hacker still get away with a XSS?
Forse, a seconda della situazione.
@BenoitEsnard ha già descritto una situazione dove il filtraggio di <
e >
non è sufficiente: quando il l'input dell'utente viene riprodotto all'interno degli attributi dei tag HTML esistenti, poiché in tal caso un utente malintenzionato potrebbe semplicemente aggiungere nuovi attributi.
Ecco una lista con diversi contesti e come gestirli quando impedisce XSS .
Is there any reason not to do this?
Sì.
Supponiamo che tu in realtà elimini solo il commento all'interno di <textarea>COMMENT</textarea>
durante la modifica di un commento e all'interno di <div id=comment>COMMENT</div>
quando mostri un commento, da nessun'altra parte, e non vuoi affatto alcuna formattazione HTML, solo testo semplice come tu hai detto.
Se scrivi correttamente la tua funzione, sarebbe sicura. Ma non sarebbe molto facile da usare. A seconda del tipo di sito web che hai, gli utenti vorranno utilizzare <
e >
in molte situazioni, ad esempio: Love you <3
, 2 < 3
, use this: this->exec()
, <font> is deprecated
, >.<
, ...
Quindi è sicuramente un problema di usabilità e probabilmente un problema di sicurezza in base al contesto e alla correttezza di implementazione .
Usa semplicemente le funzioni che sono comunemente usate invece di scrivere il tuo meccanismo (per esempio in PHP usa htmlentities quando echi l'input dell'utente in un HTML contesto in cui non vuoi analizzare l'HTML dato, usa alcune librerie come HTMLPurifier se hai bisogno di HTML e così via)