Вопрос

как мне избежать опасного несанкционированного ввода в формате html в jinja2?

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

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

Это было полезно?

Решение

например ,

{{ user.username|e }}

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

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

Другие советы

Вы также могли бы указать среде, чтобы она автоматически изменяла все:

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

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

Если вы хотите избежать 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;'

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top