No, poiché sembra indicare che stai utilizzando jQuery (esperto nell'analisi di informazioni dai tag HTML) per eseguire la convalida dell'input all'utente che inserisce l'HTML che verrà quindi mostrato all'utente. Inserire nella lista bianca i tag HTML sicuri e inserire tag HTML non sicuri nella blacklist è il metodo sbagliato per impedire XSS.
Il metodo giusto utilizza un linguaggio di markup leggero come Markdown o reStructuredText per l'input dell'utente di dati formattati (come post di blog , commenti, ecc.). In questo modo l'utente può stilizzare il proprio testo in qualsiasi cosa desideri, aggiungere testo in grassetto o collegamenti all'interno del proprio commento con una sintassi come **make this bold**
o [text for a link](http://www.example.com/fake/link)
che converte sempre in html per essere visualizzato come <a href="http://www.example.com/fake/link">text for a link</a>
nel browser dell'utente. In questo modo impediamo completamente di dire <script>
di inserimento di file javascript o onclick
onmouserover
form
con attributi di azione in quanto il tuo linguaggio di markup sicuro limitato è impostato per non consentire tali tag o attributi generali.
È garantito che devi impostare la lingua in safe_mode
dove caratteri speciali in particolare <
, >
, &
, "
, '
sono escape HTML (in <
, >
, &
"
e '
che verranno visti dall'utente come il carattere reale senza essere interpretati dal browser come sorgente HTML parte), non è possibile assegnare attributi ( attributes=false
) immesso (es. onclick
), oltre a richiedere che i collegamenti inizino con una lista bianca limitata; ad es., http
, //
, /
, ftp
, mailto
, news
, quindi non inavvertitamente lascia che gli utenti inseriscano javascript
come protocollo nei loro collegamenti.
(Questo può essere ottenuto anche filtrando l'input raw attraverso il purificatore HTML, se vuoi che i tuoi utenti possano scrivere HTML dritto come nella risposta di Hendrik.)
In questo modo con un linguaggio di markup leggero e maturo, non ti dimenticherai di rimuovere qualcosa, a prescindere da quanto sia oscuro o come la tua libreria jQuery non abbia rilevato HTML malformato mentre lo disinfetti, ma un particolare browser ha fatto .