Dipende dal contesto. Suppongo che tu stia utilizzando la funzione htmlentities() , che sarebbe generalmente sicura. Fa più o meno esattamente la stessa cosa di htmlspecialchars() .
Entrambe sono protette contro XSS generico e prevengono l'XSS basato sugli eventi quando il parametro sterilizzato viene iniettato in un tag HTML.
Entrambi non impediscono gli attacchi di javascript: , che possono verificarsi se si inserisce il valore del parametro in un collegamento, iframe o un altro tag simile. Se inserisci un src o href da uno qualsiasi di questi tag, ti consigliamo di rimuovere prima tutti gli spazi bianchi dal parametro e quindi di controllare sia javascript: che data: .
javascript:alert(0) ti darà un avviso quando inserito in un link o in un iframe.
data:text/javascript:alert(0) farà lo stesso.
data:text/html:<script>alert(0);</script> fa la stessa cosa e ignora strip_tags .
La ragione per la prima rimozione degli spazi bianchi, è di impedire a un utente malintenzionato di eliminare un'interruzione di riga / un carattere CRLF nel mezzo del loro carico utile, quindi PHP lo legge come non javascript: o data: quando blocca il payload, ma verrà comunque eseguito in quanto javascript lo ignorerà.
Spero che questo spieghi che tipo di attacchi sono possibili, è molto facile affermare che htmlentities() e htmlspecialchars() sono una soluzione adatta al problema, ma a seconda della situazione, può essere estremamente pericoloso consigli.