Twig: Erlaube HTML, aber escape script

ch untersuche ein möglichesXSS Angriffsvektor für meine Anwendung.

Was ich habe

FormType mit einem einzelnentextarea Feld. Normalerweise kann dieses Feld @ enthalthtml StichworteTwig Vorlage, mit der die eingefügten Daten gerendert werden.

Ich benutze dieses Formular, um den folgenden Inhalt einzufügen:

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

Das Anzeigen dieser Daten würde ein Escape-Vorgang erfordern. Ich kenne nur wenige Strategien, um den Daten zu entkommen.

1)raw filter: Deaktiviert das Entrinnen vollständig -> führt mögliches XSS @ e

2)e filter:

html Flavour Outputs:<b>Some valid HTML text</b> <script type="text/javascript">alert("XSS")</script>js Flavour Outputs:\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 }}, Ausgänge:Einig gültiger HTML-Text alert ("XSS")

Dieser funktioniert, aber irgendwie gefällt es mir nicht. Ich suche eher eine Blacklist-Lösung, keine Whitelist.

Jetzt die Frage:

Gibt es eine andere Escape-Strategie, die @ erlaubhtml Tags, aber escape<script> tag likee("js") Filter funktioniert?

Sollte ich das Skript während der Übermittlung des Formulars oder während des @ "töten"Twig rendering?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage