Go HTML テンプレートを使用する場合、出力内に謎の "ZgotmplZ" が表示されることがあります。これは単純な文字列ではなく、問題を示す特別な値です。
「ZgotmplZ」は「ゼロ値がテンプレート Z を取得しました」の略で、安全でないコンテンツが渡されたときに表示されます。テンプレート内の CSS または URL コンテキストに追加します。たとえば、次のテンプレートを実行すると、
<option {{ printSelected "test" }} {{ printSelected "test" | safe }}>test</option>
が出力されます:
<option ZgotmplZ ZgotmplZ >test</option>
「ZgotmplZ」に対処するための鍵は、次のことを確認することです。安全でないコンテキストでは安全な文字列のみが使用されます。これは、テンプレート関数の出力にセーフ関数を適用することで実現できます。ただし、selected のような属性の場合、safe を直接適用すると XSS 脆弱性が発生する可能性があります。
これに対処するには、テンプレート funcMap にカスタム attr 関数を追加できます。
funcMap := template.FuncMap{ "attr": func(s string) template.HTMLAttr { return template.HTMLAttr(s) }, "safe": func(s string) template.HTML { return template.HTML(s) }, }
Withこの関数を適切に配置すると、次のようにテンプレートを変更できます:
<option {{.attr | attr}}>test</option> {{.html | safe}}
これにより、属性値が安全にエスケープされます。
「ZgotmplZ」の目的を理解し、適切なエスケープ手法を採用することで、安全でないコンテンツが Go HTML テンプレート内の安全でないコンテキストに到達するのを防ぐことができます。 、Web アプリケーションの整合性とセキュリティを維持します。
以上がGo HTML テンプレートの「ZgotmplZ」の原因と解決方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。