メッセージ プロパティ ファイル内のメッセージを指定すると、次のようになります。
message = Change relation <strong>{0}</strong> -> <strong>{1}</strong> to <strong>{2}</strong> -> <strong>{3}</strong>?
プレースホルダーのいずれかのコンテンツがユーザーの影響を受ける文字列である場合、潜在的な XSS を防ぐためにメッセージを HTML エスケープする必要があります ( c:out
JSP テンプレートで タグを使用してこれを行います。htmlEscape-タグの属性spring:message
も同様ですが、違いはないと思います)。
ただし、そうすることで、メッセージ<strong>
などのマークアップが破損し、出力につながります。
Change relation <strong>Peter</strong> -> <strong>Car</strong> to <strong>Carl</strong> -> <strong>Bus</strong>?
ここでスタックオーバーフローのスレッドを既に読みましたが、XSS には対応していません。
私はこれらのオプションについて考えています:
<strong>
1)メッセージ プロパティ ファイルのすべてのタグを一重引用符に置き換えるだけです。html がメッセージ全体をエスケープしても問題はありませんが、メッセージの特定の部分の強調表示が少し少なくなるという欠点があります。
2) メッセージをパーツに分割し、(JSP) テンプレートで個別のマークアップを可能にします。これは、マークアップを正しくするだけでも大変な作業のように感じます。
ここで何か不足していますか?どちらがより良い選択肢ですか、それとも別の選択肢がありますか?
編集: HTMLエスケープなしのメッセージは、私が望むように、次のようになります:
関係をピーター->車からカール->バスに変更しますか?
したがって、messages.properties ファイルにあるような html マークアップは、テンプレートに表示されるときにレンダリングされます。
エスケープすると、メッセージは上記のようになり、<strong>
タグをレンダリングする代わりに表示します。