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