模板不必要地将`<`转换为`&lt;`而不是`>`

Sou*_*aws 4 escaping go go-templates

我使用开发工具,使用模板生成自述文件和许可证等文件.

除了<角色的一个实例变成了一个&lt;- 一切正常工作- 相应的>角色工作正常,并在输出中按预期显示.

模板文件:https://raw.githubusercontent.com/Southclaws/pawn-package-template/master/README.md感兴趣的行是:

```pawn
#include <{{.Repo}}>
```
Run Code Online (Sandbox Code Playgroud)

Repo被插入与预期结果是

#include <sometext>
Run Code Online (Sandbox Code Playgroud)

但实际出来的是:

#include &lt;sometext>
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么会发生这种情况.老实说这似乎是一个错误,因为如果它正在寻找逃避的东西,那么它肯定会>变成&gt;这样,对吧?

icz*_*cza 9

html/template 提供自动,上下文敏感的转义,以防止代码注入:

HTML模板将数据值视为纯文本,应对其进行编码,以便将它们安全地嵌入到HTML文档中.转义是上下文的,因此动作可以出现在JavaScript,CSS和URI上下文中.

html/template 仅用于生成HTML输出:

它提供与包文本/模板相同的接口,只要输出为HTML,就应该使用它而不是text/template .

如果输出不是HTML,请使用text/template不转义数据的输出.

  • 天啊,就是这么简单……这就是我过度依赖汽车进口商的结果!谢谢! (2认同)