FreeMarker(七)Html转义

在不做任何处理的情况下,往页面传一串Html代码,它会嵌套到页面代码中,一起被编译并且显示。

比如:某个用户把自己的用户名写成a标签,最后显示出来的用户名就是一个超链接
例:

//传递的参数
map.put("sp6", "这是一段带有攻击性的字符串<a href='https://www.baidu.com/'>请点击</a>");
1
2
页面代码:

<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>

页面显示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JPnC2k64-1570546997250)(/uploads/201710/attach_14eeea087b1c4fc8.png “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>

点赞 1
————————————————
版权声明:本文为CSDN博主「疯狂的妞妞」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chen413203144/article/details/79504686

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值