在不做任何處理的情況下,往頁面傳一串Html代碼,它會嵌套到頁面代碼中,一起被編譯並且顯示。
比如:某個用戶把自己的用戶名寫成a標簽,最后顯示出來的用戶名就是一個超鏈接
例:
//傳遞的參數
map.put("sp6", "這是一段帶有攻擊性的字符串<a href='https://www.baidu.com/'>請點擊</a>");
頁面代碼:
<html>
<head>
<meta charset="utf-8">
<title>進度條測試</title>
<script type="text/javascript" src="../js/jquery-1.11.1.min.js"></script>
</head>
<body>
${map.sp6}
<br/>
</body>
頁面顯示:
有兩種解決方案:
1.在字符串后面加?html
${map.sp6?html}
2.使用<#escape>轉義
值得注意的就是,<#escape>僅僅只對當前文件中的值做轉義,而不會去處理嵌套的其它文件(Include)和宏
<#-- escape標簽將Html代碼作為字符串直接顯示於頁面 --> <#escape x as x?html> <p>特殊字符串: ${map.sp1}</p> <p>特殊字符串: ${map.sp2}</p> <p>特殊字符串: ${map.sp3}</p> <p>特殊字符串: ${map.sp4}</p> <#-- 內部不需要轉義則的部分使用<#noEscape>標簽--> <p>取消轉義 <#noEscape>${map.sp5}</#noEscape></p> </#escape>