1

Rails プロジェクトのビューの 1 つにいくつかの単純な erb コードがあります。

<%= comment.body %>

フォーマット情報があるため、comment.body の html タグを保持したいと思います。テキストがデータベースに適切に保存されていることを確認しました

<b>hello</b>

しかし、私が期待するように、ページ上でこんにちは<b>hello</b>ではないことが判明しました。

これはどうやってできるの?私は<%= hhtmlコードをエスケープするために使用していません。

逃げないようにするにはどうすればいいですか?私は Rails 3 を使用しています。これは問題ですか?

4

2 に答える 2

5

サニタイザーも使えます。

<%= sanitize(comment.body) %>

サニタイズは HTML コードを残しますが、JavaScript をエスケープします。

于 2011-06-16T05:22:37.993 に答える
2

Rails 3 は、出力を自動的にエスケープするようになりました。

テキストをアンエスケープして実際のタグを使用するには、次を使用しますraw(...)

<%= raw(comment.body) %>

ただし、スクリプト (悪意のある可能性がある) を含むすべてのタグが許可されるため、これには注意してください。より安全なオプションは、未加工の HTML タグを許可するのではなく、マークダウン形式のテキストまたは類似のものをユーザーに使用させることです。

于 2011-06-16T04:40:47.557 に答える