我如何在jinja2中html转义危险的未经消毒的输入?

问题描述 投票:21回答:4

我可以在模板中执行它还是必须在python代码中完成?

我有一个可能包含da u&s字符的变量。如何在jinja2中转义?

python security escaping jinja2
4个回答
41
投票

例如

{{ user.username|e }}

通过|e过滤器将其放置

Jinja: Template Designer Documentation -> HTML Escaping


14
投票

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

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

注:在jinja1中,这是自动转义


6
投票

如果您想在程序中转义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;'

1
投票

Flask具有内置的tojson过滤器:

http://flask.pocoo.org/docs/templating/#standard-filters

© www.soinside.com 2019 - 2024. All rights reserved.