我听说有人在谈论Go在使用HTML时如何很好地实现“上下文感知变量”。它们是什么以及它们如何运作?
我猜测,因为它与安全性有关,它是某种变量,知道它是否已被消毒。它是否类似于一个名为unsanitizedString
的类,它会在转换为普通字符串时自动清理内容?
答案 0 :(得分:4)
html/template包可以识别上下文。
此包可以理解HTML,CSS,JavaScript和URI。它为每个简单的操作管道添加了清理功能
因此,如果您的变量Foo
包含<script>alert('you have been pwned')</script>
,并且您将其打印在html元素<p>{{.Foo}}</p>
中,则会正确转义Foo以避免脚本注入。
使用html/template
时,如果要在转义时覆盖,则必须为变量添加explicet类型。
这是example