我使用开发工具,该工具使用模板生成自述文件和许可证等文件。
除了<
字符的一个实例变为<
之外,一切正常,相应的>
字符工作正常,并在输出中按预期显示。
模板文件:https://raw.githubusercontent.com/Southclaws/pawn-package-template/master/README.md感兴趣的行是:
```pawn
#include <{{.Repo}}>
```
插入Repo
时,预期结果为
#include <sometext>
但实际出来的是:
#include <sometext>
我无法弄清楚为什么会发生这种情况。老实说这似乎是一个错误,因为如果它要寻找逃避的东西,肯定会将>
转变为>
,对吗?
答案 0 :(得分:8)
html/template
提供自动,上下文敏感的转义,以防止代码注入:
HTML模板将数据值视为纯文本,应对其进行编码,以便将它们安全地嵌入到HTML文档中。转义是上下文的,因此动作可以出现在JavaScript,CSS和URI上下文中。
html/template
仅用于生成HTML输出:
它提供与包文本/模板相同的界面,只要输出为HTML ,就应该使用它来代替文本/模板。
如果输出不是HTML,请使用text/template
而不是数据转义。