高安全性的内容管理系统
一站式建站解决方案
高性能静态网站构建工具
精美的网站模板库
详细的模板开发指南
完整的API接口说明
直观的视频使用指南
常见问题解答集锦
最新产品动态与行业资讯
了解我们的故事
获取支持与合作
escape 过滤器可以将字符串中的特殊字符转义。比如将 HTML 代码输出显示,而不是解析 HTML 代码。如< 会转换为 <。escape 它只转义五个这样的字符:<,>,&,'和"。< 会转换为 <,> 会转换为 >,& 会转换为 &," 会转换为 ",' 会转换为 '。
escape
<
<
>
&
'
"
>
&
"
'
也可以使用 e 来代替 escape。因为 e 是 escape 的别名,使用效果一致。
e
默认地,所有的标签输出都是自动转义的。因此一般情况下可以忽略这个过滤器。在某种情况下可能会需要用到。
除了使用过滤器,也支持使用 autoescape 标签对整块代码进行转义。
autoescape
escapejs 过滤器可以将 js 代码中的特殊字符进行转义。如\r 会转换为 \u000D。escapejs 会将除了 a-zA-Z 或空格、/ 外的其它字符,都转换为 \uxxxx 的显示形式。
escapejs
\r
\u000D
a-zA-Z
/
\uxxxx
escape 和 e 过滤器的使用方法:
{{ "<script>"|safe|escape }} {{ "<script>"|safe|e }}
escapejs 过滤器的使用方法:
{{ obj|escapejs|safe }}
比如将 <script> 转义,则可以这么写:
<script>
{{ "<script>"|safe|escape }} {{ "<script>"|safe|e }} # 显示结果 <script> <script>
使用 autoescape 标签对整段代码进行转义处理。autoescape 标签需要一个参数来明确说明是需要转义还是不转义。 on 是转义, off 是不转义。
on
off
# 不转义 {% autoescape off %} {{ "<script>alert('xss');</script>" }} {% endautoescape %} # 转义 {% autoescape on %} {{ "<script>alert('xss');</script>" }} {% endautoescape %} # 显示结果 <script>alert('xss');</script> <script>alert('xss');</script>
直接输出结果:
显示结果
<script> <script>
{{ "<script>alert('xss');</script>" }} {% autoescape off %} {{ "<script>alert('xss');</script>" }} {% endautoescape %} {% autoescape on %} {{ "<script>alert('xss');</script>" }} {% endautoescape %} {% autoescape off %} {{ "<script>alert('xss');</script>"|escape }} {% endautoescape %}
输出结果:
<script>alert('xss');</script> <script>alert('xss');</script> <script>alert('xss');</script> <script>alert('xss');</script>
escapejs 过滤器
{{ "escape sequences \r\n\'\" special chars "?!=$<>"|escapejs|safe }} # 显示结果 escape sequences \u000D\u000A\u005C\u0027\u005C\u0022 special chars \u0022\u003F\u0021\u003D\u0024\u003C\u003E