問題タブ [html-escape]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Rails 3 - フラッシュメッセージをエスケープする方法
フラッシュメッセージはRailsによって自動的にエスケープされるべきですか? そうでない場合、メッセージが確実にエスケープされるようにする方法 (を使用せずにCGI::escapeHTML
)?
いくつかの検索を行った後、エスケープする必要があることがわかり、html_safe に html を表示するメッセージが表示されました。でもやってみると
としてではなく、太字のYO<b>YO</b>
として表示されます。string オブジェクト自体は html_safe ではないことに注意してください。
html - プレースホルダーを使用したメッセージ プロパティの html マークアップ - XSS の可能性
メッセージ プロパティ ファイル内のメッセージを指定すると、次のようになります。
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>
タグをレンダリングする代わりに表示します。
jsf - f:selectItem itemEscaped=false p:selectOneButton ラベルの HTML のエスケープを解除しない
私は PrimeFaces 5.3 を使用しています。ap:selectOneButton に次の f:selectItem があります
このhtmlコードを直接示しています:
代わりにフォントの素晴らしいアイコンを表示します。
アイデアや提案はありますか?
android - Android の Html.escapeHtml と TextUtils.htmlEncode の違いは何ですか? いつどちらを使用する必要がありますか?
Android には、文字列内の HTML 文字/エンティティをエスケープ/エンコードする 2 つの方法があります。
Html.escapeHtml(String)
、API 16 (Android 4.1) で追加されました。ドキュメントは言う:指定されたプレーン テキストの HTML エスケープ表現を返します。
TextUtils.htmlEncode(String)
これについては、ドキュメントは次のように述べています。文字列を HTML エンコードします。
ドキュメントを読むと、どちらもほとんど同じことをしているように見えますが、テストすると、(私にとっては) かなり不思議な出力が得られます。
例えば。入力で:<p>This is a quote ". This is a euro symbol: €. <b>This is some bold text</b></p>
/li>Html.escapeHtml
与えます:一方
/li>TextUtils.htmlEncode
、与えます:
したがって、2 番目は引用符 ( " )をエスケープ/エンコードするようですが、最初はそうではありません。1 番目はユーロ記号をエンコードしますが、2 番目はそうではありません。混乱しています。
では、これら2つの方法の違いは何ですか? それぞれがどの文字をエスケープ/エンコードしますか? ここでのエンコーディングとエスケープの違いは何ですか? いつどちらか一方を使用する必要がありますか (または、あえぎ、両方を一緒に使用する必要がありますか?)?
jsp - 格納された JSP (JSTL) 変数から XML エスケープ文字を削除するにはどうすればよいですか?
jsp ファイル内の 2 つの文字列の値を比較しようとしています。これらの文字列にはどちらもアポストロフィが含まれています'
。これらの文字列は、さまざまなソースからのものです。
次のように 2 つの文字列を直接比較すると、次のようになります。
比較は false を返します。ただし、2 つの値を出力すると、
マイクズ・グリーン
マイクズ・グリーン
前のステップで、これらの文字列はトリミングされますが、これは空白の問題ではありません。何らかの理由で、変数として格納される場合、これら 2 つのうちの 1 つが xml でエスケープされたアポストロフィとともに格納されます。
これを証明するために、比較を次のように変更しました。
この比較は true を返します。したがって、2 つの文字列の 1 つには、保存中にアポストロフィのリテラル xml エスケープ バージョンがあります。
保存されたjsp変数内のxml文字列をエスケープするより効率的な方法はありますか? これは比較を行う非常に醜い方法であり、将来の文字列に不適切にエスケープされている他の文字が含まれている場合、このロジックにさらにコードを追加する必要があるため、簡単には拡張できません。