2012-02-28 3 views
1

는 내가 ckeditor 보석 설치 : 나는 모든 단계를 따라레일 애플리케이션에서 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 태그입니다. 예 :

<p> Default v<strong>al</strong>ue s<u>ada</u>sd</p> 

최종 HTML이 실제로 렌더링되도록하려면 어떻게해야합니까?

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

을주의해야하지만 원료 사용 당신이 출력 HTML에 신뢰할 수없는 사용자를 허용하는 경우, 그것은 XSS 공격에 당신을 열 수 있습니다 : 당신이 원료 사용 그래서

답변

6

레일은 기본적으로 출력을 탈출 귀하의 사이트.

+0

감사합니다. 이런 상황에서 XSS 공격을 피하기 위해해야 ​​할 일은 무엇입니까? – alexchenco

+0

솔직히 말해서, 사용자가 HTML을 입력하도록 허용 한 적이 전혀 없었으므로 최선의 방법을 100 % 확신하지 못했습니다. [sanitize] (http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html) 도우미를 사용하여 절대적으로 필요한 HTML 요소/속성 만 허용해도 충분합니다. – pjumble

0

죄송합니다. 이전 답변에서 문제가 발생했습니다. 이것은 무슨 의미가 있습니다 : 나는 그것이 '원시'를 사용하여보다 안전하기 때문에

(@ post.content가)

을 .html_safe 사용할 수 있습니다.

관련 문제