html/tempalte针对的是需要返回HTML内容的场景,在模板渲染过程中会对一些有风险的内容进行转义,以此来防范跨站脚本攻击

如果要渲染的模板内容是一串html语句,如果不加处理,那么显示出来的就是原本字符串的内容

然后我们现在需要将它以html形式展现出来,那么我们就需要先自定义一个函数用来返回html

 //解析模板之前定义一个自定义函数safet, err := template.New("xss.tmpl").Funcs(template.FuncMap{//传入一个string,返回值是template.HTML形式"safe": func(str string)template.HTML {return template.HTML(str)},}).ParseFiles("src/gin_demo/xss.tmpl")if err != nil {fmt.Printf("parse tempalte failed,err:%v\n", err)return}

接着来渲染模板

 //渲染模板str1 := "<script>alert(123);</script>"str2 := "<a href='abc.com'>csq的博客</a>"t.Execute(w,map[string]string{"str1": str1,"str2": str2,})

xss.tmpl

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-sacle=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>xss</title>
</head><body>
<!--将str1的值通过管道传给safe函数,这样str1就会被解析成html语句,而str2不会,如果想让str2也被解析,那么也加个| safe就好-->
评论是 {{ .str1 | safe }}
评论是 {{ .str2 }}
</body></html>

html/template相关推荐

  1. 微信小程序模板template

    上面是官方的讲解, 主要是方便在不同的地方调用. 下面自己说下使用, 先创建一个模板名字是自己随便取的, 在template.wxml中填写模板 最外层用template标签 设置一个name属性 & ...

  2. C++中模板template typename T

    template <typename Dtype>. 网上解释的非常多,觉得比较啰嗦,其实就是一个类型模板. 比如我们要计算两个数的加法,针对不同类型可能需要设计不同类型的函数,那么tem ...

  3. 让你爽到飞起的【懒人插件AutoScssStruct4Vue】VSCode根据template的标签目录一键生成SCSS/LESS结构,敏捷开发必备插件!!!

    Ctrl+Shift+X 搜索AutoScssStruct4Vue   如上图直接右键-autoScssStruct(你都不需要聚焦到template节点) 直接就给你妥妥的把SCSS代码写好了,如果 ...

  4. ue4商城资源 Car Configurator Template 汽车配置器模板

    ue4商城资源 Car Configurator Template 汽车配置器模板 ue4商城资源 Car Configurator Template 汽车配置器模板 Unreal Engine虚幻游 ...

  5. C++ template

    (转自http://www.cnblogs.com/gw811/archive/2012/10/25/2738929.html) C++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类或 ...

  6. 使用Repeater的Template

    .NET FX提供了一个方法,就是使用Template来在程序运行时对Repeater的显示进行控制. 这里我就不多说了,可以去看MSDN中的相关资料.(嘿嘿,其实我也没搞多少 ).. 其实主要是pr ...

  7. 设计模式之模板方法模式(Template Method)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  8. 微信小程序模块化开发 include与模板开发 template

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 正文: 1. include  是引用整个wxml文件,我通常会配合js,css一起使用: 使用场景,需要封装 ...

  9. template.process(root, out)的用法(shiro项目中来的九)

    假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情 ...

  10. Smart template的控件能否当成普通控件来用

    我的同事问过我这个问题: 只要弄清楚Smart control的原理,就能回答这个问题. 答案是: smart control可以像普通的控件一样在xml view中被定义和使用,但是必须结合ODat ...

最新文章

  1. Ubuntu 12.04 安装图形界面
  2. PageAdmin CMS网站建设教程:如何实现信息的定时发布
  3. 在UltraWebGrid单元格中绑定dropdownlist
  4. [MySQL] 事务的ACID特性
  5. 原生android 全面屏,谷歌全面屏手机曝光!谷歌pixel2,安卓8.0+骁龙836!
  6. mysql 表与表之间的条件比对_值得收藏 | 一份最完整的MySQL规范
  7. 数据科学 IPython 笔记本 9.3 理解 Python 中的数据类型
  8. VR来了,科技的各行各业要如何做好准备?
  9. 详解C# 匿名对象(匿名类型)、var、动态类型 dynamic
  10. 下载Python OpenCV相关资料方法整理
  11. 可以将pdf转换成jpg图片格式的方法
  12. SPSS 实现KMO和Bartlett的球形度检验
  13. Linux九阴真经之大伏魔拳残卷5 nginx
  14. 苹果/Mac Fn功能键的作用是什么?Fn键使用小技巧有哪些
  15. HBase整合MR本地IDEA运行
  16. Excel函数不生效的一种情况
  17. python 图像和视频互相转换
  18. 一个Weex的小小小小小小页面示例
  19. 让办公更高效!推荐10个不容错过的神级办公软件
  20. java 跳转deeplink链接_Deeplink(深度链接)唤起App,怎样实现无缝跳转

热门文章

  1. 0930-值得纪念的一天,永远不要心存侥幸
  2. c语言编译配置文件出错,Android4.4/CM11编译常见错误及解决方法!
  3. 诺基亚如何利用计算机上网,诺基亚S60怎么通过笔记本的WIFI上网?
  4. C语言源代码系列-管理系统之单项选择题标准化考试系统设计
  5. 众人给诺基亚支招 Android提议何时了?
  6. sql语句常见错误:Unknown column 'xxx' in 'where clause该如何解决?
  7. python读取txt文件写入失败-Python write 函数写文件失败
  8. CSS设置文字自动换行
  9. Catalan数(卡特兰数)系列问题及代码
  10. long自动转为float类型