2012-02-28 6 views
1

私はCKEditorバージョンの宝石をインストール:Railsアプリケーションを作成するには、ckeditor gemによって生成されたHTMLをレンダリングしますか?

https://github.com/galetahub/ckeditor

私はすべてのステップに続き、私はこのようにそれを表示しています:

<%= form_for(@post) do |f| %> 
    <%= render 'shared/error_messages' %> 
    <div class="field"> 
    <%= f.label :title %><br /> 
    <%= f.text_field :title %> 
    </div> 
    <div class="field"> 
    <%= f.label :content %><br /> 
    <%= f.cktext_area :content, :input_html => { :value => "Default value" } %> 
    </div> 
    <div class="field"> 
    <%= f.label :tag_name %> 
    <%= f.autocomplete_field :tag_name, autocomplete_tag_name_posts_path, :"data-delimiter" => ' ' %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

、これは私がコンテンツを表示する方法である:

<p><%= @post.content %></p><br /> 

しかし出力は実際のHTMLタグです。例:

​​

最終的なHTMLを実際にレンダリングするにはどうすればよいですか?あなたは、生の使用する必要がありますので

答えて

6

Railsはデフォルトで出力をエスケープ:

<p><%= raw @post.content %></p> 

あなたは、出力HTML上に信頼されていないユーザーを許可している場合しかし、それはXSS攻撃にあなたを開きます生の使用は注意が必要あなたのサイト。

+0

ありがとうございました。このような状況でXSS攻撃を避けるために行うべきことは何ですか? – alexchenco

+0

正直言って、私はユーザーがHTMLを入力できるようにしたことがないので、何かするのが最善のことを100%保証しているわけではありません。 [sanitize](http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html)ヘルパーを使用して、絶対に必要なHTML要素/属性のみをホワイトリストに追加するだけでも十分です。 – pjumble

0

申し訳ありませんが、私の前の答えに間違っていた。これは私が何を意味するのかである:私はそれは '生' を使用してより安全であるため、

(@ post.content)は

を.html_safe使用します。

関連する問題