我该如何在jinja2中对危险的未经过净化的输入进行html转义?

37

我可以在模板内完成这个任务还是必须使用Python代码?

我有一个可能包含危险字符的变量。在jinja2中,如何对其进行转义?

5个回答

63

23

您还可以告诉环境自动转义所有内容:

e = Environment(loader=fileloader, autoescape=True)

注意:在Jinja1中,这个属性为auto_escape。


10
如果你想在程序中避免使用HTML标签,可以像这样做(示例):
>>> import jinja2
>>> jinja2.__version__
'2.6'
>>> a
'<script>alert("yy")</script>'
>>> jinja2.escape(a)
Markup(u'&lt;script&gt;alert(&#34;yy&#34;)&lt;/script&gt;')
>>> str(jinja2.escape(a))
'&lt;script&gt;alert(&#34;yy&#34;)&lt;/script&gt;'

对于较新的jinja2版本,请使用import markupsafe; markupsafe.escape,参见这里 - undefined

1

-3

您可以进行字符串检查并使用相应的转义字符进行替换。

例如:string=我是一个特殊字符 <
请执行以下操作:

string.replace("<","&lt ;")

请注意,在您的代码中,t和;之间的空格已被删除。无法在此处消除它,因为它将被格式化以显示< :P
然后使用jinja2打印出格式化的字符串。<应该出现在您的显示器上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接