FreeMarker(七)Html轉義


在不做任何處理的情況下,往頁面傳一串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>

頁面顯示:

aaaaa

有兩種解決方案:

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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM