如何在jinja2中html-escape危险的未经过类型化的输入?
我可以在模板中进行,还是必须在python代码中完成?
我有一个可能包含da< ngero> u& s chars的变量。我如何在jinja2中逃脱它
答案 0 :(得分:36)
e.g。
{{ user.username|e }}
通过|e
过滤器
Jinija: Template Designer Documentation -> Builtin Filters: Escape
答案 1 :(得分:14)
您还可以告诉环境自动查看所有内容:
e = Environment(loader=fileloader, autoescape=True)
注意:在jinja1中这是auto_escape
答案 2 :(得分:6)
如果你想在你的程序中转义html,你可以这样做(例子):
>>> import jinja2
>>> jinja2.__version__
'2.6'
>>> a
'<script>alert("yy")</script>'
>>> jinja2.escape(a)
Markup(u'<script>alert("yy")</script>')
>>> str(jinja2.escape(a))
'<script>alert("yy")</script>'
答案 3 :(得分:1)
Flask有一个内置的tojson
过滤器:
答案 4 :(得分:-1)
您可以进行字符串检查并替换为相应的转义字符。
例如:string=I am a special character <
执行以下操作:
string.replace("<","< ;")
请注意,在您的代码中,t 和 ; 之间的空格。已被淘汰。不能在这里消除它,因为它会被格式化为显示 < :P
然后用jinja2打印出格式化后的字符串。 < 应该出现在您的显示中。