Eigentlich kommt es darauf an. Djangos Templating-Engine entweicht automatisch, so dass Sie nicht wirklich flüchten müssen.
Wenn Sie den Vorlagenfilter "sicher" wie {{c.title|safe}}
hinzufügen, müssen Sie sich um Dinge wie die HTML-Injektion kümmern, denn "sicher" markiert die Zeichenfolge als solche und bedeutet, dass sie nicht maskiert wird.
Es gibt auch ein Schablonen-Tag {% autodescape on%} ... {% endautoescape%}, wobei "on" bei Bedarf auf "off" gesetzt werden kann. Standardmäßig ist es aktiviert und das Tag wird nicht benötigt.
Andere Template-Engines können nicht standardmäßig austreten, Jinja2 ist einer von ihnen.
Das automatische HTML-Escaping ist standardmäßig aktiviert, sodass Sie in den meisten Fällen nicht manuell ausweichen müssen, aber nicht alle !
Den Inhalt einer Variablen in einem HTML-Element zu speichern ist in Ordnung:
%Vor% Django entkommt automatisch den Zeichen <
, >
, &
, "
und '
, was hier benötigt wird.
Es ist auch in Ordnung, eine Variable innerhalb eines Attributs abzulegen, da "
und '
beide maskiert sind, aber denken Sie daran, Anführungszeichen zu verwenden, da Leerzeichen nicht maskiert sind:
Wenn Sie eine Zeichenfolge innerhalb von Javascript verwenden möchten, müssen Sie den escapejs
-Filter verwenden und die Anführungszeichen nicht vergessen. Dies schützt sowohl davor, aus den Anführungszeichen für die Javascript-Variable auszutreten, als auch mit <script>
:
</script>
-Tag zu entkommen
%Vor%
Automatisches Escaping ist in Django-Vorlagen standardmäßig aktiviert, sodass Sie die Escape-Funktion nicht verwenden müssen. Safe wird verwendet, wenn Sie es deaktivieren möchten und das Vorlagen-Rendering-System wissen lassen soll, dass Ihr Datum in einem nicht maskierten Format sicher ist. Einzelheiten finden Sie in den django-Dokumenten: