jinja2: html escape-переменные - PullRequest
       34

jinja2: html escape-переменные

18 голосов
/ 13 октября 2009

как мне html-экранировать опасный неанизированный ввод в jinja2?

Могу ли я сделать это внутри шаблона или это должно быть сделано в коде Python?

У меня есть переменная, которая может содержать символы da u & s. Как мне избежать этого в jinja2

Ответы [ 4 ]

36 голосов
/ 13 октября 2009

1001 *, например *

{{ user.username|e }}

Пропустите через фильтр |e

Jinija: Документация дизайнера шаблонов -> Встроенные фильтры: Escape

14 голосов
/ 29 сентября 2010

Вы также можете указать окружению autoescape все:

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

примечание: в jinja1 это auto_escape

6 голосов
/ 08 апреля 2012

Если вы хотите экранировать 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 голос
/ 23 января 2013

Колба имеет встроенный tojson фильтр:

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

...