escape
过滤器可以将字符串中的特殊字符转义。比如将HTML代码输出显示,而不是解析HTML代码。如<
会转换为 <
。escape
它只转义五个这样的字符:<
,>
,&
,‘
和“
。<
会转换为 <
,>
会转换为 >
,&
会转换为 &
,”
会转换为 "
,’
会转换为 '
。
也可以使用 e
来代替 escape
。因为 e
是 escape
的别名,使用效果一致。
默认地,所有的标签输出都是自动转义的。因此一般情况下可以忽略这个过滤器。在某种情况下可能会需要用到。
除了使用过滤器,也支持使用 autoescape
标签对整块代码进行转义。
escapejs
过滤器可以将js代码中的特殊字符进行转义。如\r
会转换为 \u000D
。escapejs
会将除了 a-zA-Z
或空格、/
外的其它字符,都转换为 \uxxxx
的显示形式。
escape
和 e
过滤器的使用方法:
}
}
escapejs
过滤器的使用方法:
}
比如将 <script>
转义,则可以这么写:
}
}显示结果
<script>
<script>
使用 autoescape
标签对整段代码进行转义处理。autoescape
标签需要一个参数来明确说明是需要转义还是不转义。 on
是转义, off
是不转义。
# 不转义}
转义
}
显示结果
<script>alert(‘xss’);</script>
<script>alert('xss');</script>
escape
和 e
过滤器直接输出结果:
}
}
显示结果
<script>
<script>
autoescape
}}
}
}
输出结果:
<script>alert('xss');</script>
<script>alert(‘xss’);</script>
<script>alert('xss');</script>
<script>alert('xss');</script>
escapejs
过滤器
}显示结果
escape sequences \u000D\u000A\u005C\u0027\u005C\u0022 special chars \u0022\u003F\u0021\u003D\u0024\u003C\u003E