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
標簽需要一個參數(shù)來明確說明是需要轉義還是不轉義。 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