2011-01-19 3 views
0

私の質問はthis oneに関連していますが、私はHTMLを注入できるように、デフォルトのRails 3の動作を "<%="に戻そうとしています。Rails 3:HTMLを挿入できるようにERBを "<%="のデフォルトの動作に戻す方法は?

私のシナリオでは、HTMLを生成する古いRails 2プラグがあります。私の見解では、このHTMLをページに挿入する必要があります。このプラグインは、HTML html_to_show変数に格納され、このように作成すると

<p class="notice"><span></span>Sorry about this, but we have a problem...</p><p class="error"><span></span>Cannot go to next step</p> 

とビューで、私はこのようhtml_to_showの内容を表示しよう:

<%= html_to_show %> 

...何私は私のブラウザでこれを取得します:

&lt;p class="notice"&gt;&lt;span&gt;&lt;/span&gt;Sorry about this, but we have a problem...&lt;/p&gt;&lt;p class="error"&gt;&lt;span&gt;&lt;/span&gt;Cannot go to next step&lt;/p&gt; 

どのサニタイズ処理も行わずに、Rails 3にhtml_to_showの内容をそのまま注入させますか?

答えて

7

短い答え:

<%= html_to_show.html_safe %> 

長い答え:

RailsのXSS攻撃から保護するために、すべてのHTMLをエスケープします。 .html_safeを追加すると、エスケープが防止されます。

+0

@futureshocked:記録のために: 'html_safe'文字列メソッドと' raw'ヘルパースタイルメソッドの両方が最終的に同じ仕事をします。ただし、プラグインを更新したい場合は、ビューに入る前に文字列を 'html_safe'としてマークすることができます。また、再度実行する必要はありません。ただし、HTMLに安全でない文字列を追加すると、安全でなくなり、再度マークする必要があります。 – coreyward

3
<%= raw html_to_show %> 

これはすべきです。

関連する問題