为了账号安全,请及时绑定邮箱和手机立即绑定

白名单标签免于使用Go的html / template进行转义

白名单标签免于使用Go的html / template进行转义

Go
炎炎设计 2021-04-30 14:15:21
将[]字节传递到模板中,作为论坛样式的Web应用程序上的消息发布的正文。在模板中,调用一个方法以转换为字符串,然后切换所有换行符以换行:<p>{{.BodyString}}</p>...func (p *Post) BodyString() string {    nl := regexp.MustCompile(`\n`)    return nl.ReplaceAllString(string(p.Body), `<br>`)}最终结果是:paragraphs <br> <br>in <br> <br>this <br> <br>post我不想用HTML(p.Body)传递整个帖子,因为它表示来自潜在不可靠来源的第三方数据。有没有一种方法可以使用香草Go1模板包将某些标签列入格式白名单?
查看完整描述

2 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

我深信模板包对此无能为力。如果您想删除特定的(列入黑名单的)标签(分别是此类标签所包围的子树)或仅允许传递特定的标签(列入白名单的标签),那么我认为大概就是解析并重写html AST是一个很好的解决方案。就是说,人们可以在这里和那里看到一些疯狂的RE试图这样做,但是我不认为这是一个“好的解决方案”,而且我怀疑它们在符合HTML规范的一般情况下是否可以成为“正确的”解决方案,其中包括一些法律上的违规行为,因为它可能不属于常规语法类别问题。


查看完整回答
反对 回复 2021-05-10
  • 2 回答
  • 0 关注
  • 310 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信