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

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

Patricia Arquette
リリース: 2024-11-04 02:33:01
オリジナル
521 人が閲覧しました

Why is

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

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

説明

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

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

解決策

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

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート