2

html をアンエスケープするにはどうすればよいですか?

このようにcssファイルをhtmlに渡しています

<style>{{.file}}</style>

私はこれを取得します

<style>ZgotmplZ</style>

フィールドを template.HTML(data) でラップしようとしましたが、うまくいきませんでした。

4

1 に答える 1

3

Go HTML テンプレート パッケージは、CSS を適切に除外します。パッケージのドキュメントtemplateから引用:

エスケープはコンテキスト依存であるため、アクションは JavaScript、CSS、および URI コンテキスト内で表示できます。

"ZgotmplZ"は特別な値です。含めようとしている値がコンテキスト内で無効または安全でない場合に、代わりに使用されます。

したがって、問題は、含めようとしている CSS 値であり、安全ではありません。最初に簡単なことを試して、それが機能するかどうかを確認してください。

body {background-color: #000}

それを引用して"ZgotmplZ"、ドキュメント(タイプで)の議論を見つけました:ErrorCode

"ZgotmplZ"説明:

テンプレートの例:

<img src="{{.X}}">
where {{.X}} evaluates to `javascript:...`

討論:

"ZgotmplZ" is a special value that indicates that unsafe content reached a
CSS or URL context at runtime. The output of the example will be
  <img src="#ZgotmplZ">
If the data comes from a trusted source, use content types to exempt it
from filtering: URL(`javascript:...`).

解決

挿入しようとしているコードは、HTML ではなく CSS コードのコンテキストにあるため、template.HTML(data).

CSS信頼できるソースからの CSS コード (ユーザーが入力した HTML フォームからではなく、指定した CSS コードなど) を安全に含めるための事前定義されたタイプがあります。例:

var safeCss = template.CSS(`body {background-image: url("paper.gif");}`)

そして、safeCss値をテンプレート パラメーターに渡します。

于 2015-01-12T16:55:54.967 に答える