Remover ataques XSS enquanto ainda permite html?

Ok, agora eu tenho um dilema, eu preciso permitir que os usuários insiram HTML bruto, mas também bloquear todos os JS - não apenas tags de script, mas a partir do href etc. no momento, tudo que eu sei é

htmlspecialchars($string, ENT_QUOTES, 'UTF-8');

Mas isso também converte tags válidas em caracteres codificados. Se eu uso striptags, também não funciona comoremove Tag! (Eu sei que você pode permitir tags, mas a coisa é se eu permitir que qualquer tag, como<a></a> as pessoas podem adicionar JS malicioso a ele.

Existe alguma coisa que eu possa fazer para permitir tags html, mas sem a injeção de XSS? Eu planejei uma função:xss() e configurei o template do meu site com isso. Ele retorna a string de escape. (Eu só preciso de ajuda comescapando :))

Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion