ホームページ >バックエンド開発 >Golang >「'>\」が正しく表示されているにもかかわらず、HTML テンプレートで「<\」が「<\」にエスケープされるのはなぜですか?

「'>\」が正しく表示されているにもかかわらず、HTML テンプレートで「<\」が「<\」にエスケープされるのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-04 02:33:01516ブラウズ

Why is

テンプレートが予期せずエスケープする

ユーザーが開発ツールのテンプレートで問題を検出しました。安全な HTML 埋め込みのためにデータを自動的にエスケープする HTML テンプレートを使用しているにもかかわらず、文字 > > が存在しないことが観察されました。文字

説明

Go の html/template パッケージの HTML テンプレートは、HTML 出力を生成するために特別に設計されています。これらは、コンテキストに依存した自動エンコードを提供し、データ値が HTML ドキュメント内に安全に埋め込まれることを保証します。このエンコーディングは、悪意のあるユーザーが安全でないコードを出力に挿入することを防ぎます。ただし、テキスト/テン​​プレート パッケージにはこのエンコード機能がなく、データ値をプレーン テキストとしてのみ解釈します。

この場合、ユーザーは非 HTML 出力 (おそらく Pawn スクリプト) を生成することを意図しているため、テキストを使用します。 /template パッケージの方が適切でしょう。 html/template パッケージが < を不必要にエスケープしていました。これは、出力が HTML に埋め込まれることが期待されていたためですが、そうではありませんでした。

解決策

この問題を解決するには、ユーザーは text/ に切り替える必要があります。非 HTML 出力を生成する場合はテンプレート パッケージを使用します。これにより、自動エンコードが無効になり、< を含むすべての文字が正しく表示されるようになります。そして >.

以上が「'>」が正しく表示されているにもかかわらず、HTML テンプレートで「<」が「<」にエスケープされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。