1

ユーザー生成コンテンツの表示に Bootstrap ツールチップを使用しています。html: trueただし、ツールチップで html を有効にして書式設定を使用できるようにするため、このオプションも使用します。

次のようなユーザーコンテンツがあるとしましょう:

<script>alert('e')</script>

サーバー側でエスケープされ、一部の div の title 属性に入れられ、次のようにブラウザーに送信されます。

<div title="&lt;script&gt;alert('e')&lt;/script&gt;">Bla</div>

しかし、ブラウザーは html エンティティのエスケープを解除し、div でツールチップ関数を呼び出すと、次の title 属性値が含まれます。

<div title="<script>alert('e')</script>">Bla</div>

これにより、アラートが発生します。したがって、次のように送信されるように、タイトル属性の内容を 2 回エスケープする必要があります。

<div title="&amp;lt;script&amp;gt;alert('e')&amp;lt;/script&amp;gt;">Bla</div>

ツールチップが呼び出されると、次のようになります。

<div title="&lt;script&gt;alert('e')&lt;/script&gt;">Bla</div>

したがって、アラートは実行されません。

Railsでこれを行う適切な方法は何ですか? 私がここに欠けているものはありますか?html: falseHTML フォーマットが必要なため、ツールチップ モジュールのオプションを使用するように言わないでください。

4

1 に答える 1

0

私はHTMLを試してみます:

<div title="<%= escape_javascript("<script>alert(\"e\");</script>") %>">Bla</div>

しかし、なぜユーザーがスクリプト タグをツールチップに挿入できるようにしたいのでしょうか?

于 2013-06-10T01:00:33.460 に答える