Ramita: Permitir HTML, pero escapar script

Estoy investigando un posibleXSS vector de ataque para mi aplicación.

Lo que tengo:

FormType con un solotextarea campo. Normalmente este campo puede contenerhtml EtiquetasTwig plantilla que representa los datos insertados.

Utilizo ese formulario para insertar el siguiente contenido:

<b>Some valid HTML text</b>
<script type="text/javascript">alert("XSS")</script>

Ver esos datos requeriría escapar. Estoy familiarizado con algunas estrategias cuando se trata de escapar de los datos.

1)raw filtro: desactiva completamente el escape -> introduce posibles XSS

2)e filtrar:

html salidas de sabor:<b>Some valid HTML text</b> <script type="text/javascript">alert("XSS")</script>js salidas de sabor:\x3Cb\x3ESome\x20valid\x20HTML\x20text\x3C\x2Fb\x3E\x0D\x0A\x3Cscript\x20type\x3D\x22text\x2Fjavascript\x22\x3Ealert\x28\x22XSS\x22\x29\x3C\x2Fscript\x3E

3){{ var|striptags('<br>')|raw }}, salidas:Algún texto HTML válido alerta ("XSS")

Este funciona, pero de alguna manera no me gusta. Estoy buscando una solución de lista negra, no una lista blanca.

Ahora la pregunta:

¿Hay alguna otra estrategia de escape que permitahtml etiquetas pero escapa<script> etiqueta comoe("js") filtro hace?

¿Debo "matar" el script durante el envío del formulario o durante elTwig ¿representación?

Respuestas a la pregunta(1)

Su respuesta a la pregunta