는 내가 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 공격에 당신을 열 수 있습니다 : 당신이 원료 사용 그래서
감사합니다. 이런 상황에서 XSS 공격을 피하기 위해해야 할 일은 무엇입니까? – alexchenco
솔직히 말해서, 사용자가 HTML을 입력하도록 허용 한 적이 전혀 없었으므로 최선의 방법을 100 % 확신하지 못했습니다. [sanitize] (http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html) 도우미를 사용하여 절대적으로 필요한 HTML 요소/속성 만 허용해도 충분합니다. – pjumble