2016-03-18 3 views
0

リッチテキストエディタを使用してアプリケーションのユーザーが挿入したコンテンツの一部をサニタイズしようとしています。私はクイックスタートの例を動作させることができないので、Railのgem sanitizeを使い始めるにはどうしたらいいですか?

私は

をインストールするバンドルを経由してsanitize gemをインストールしているし、それがインストールされた宝石のリストに表示され、その後、私のビューのいずれかで、このテストコードを追加しましたapplication_controlled.rb

require 'sanitize'を追加しました:<%= Sanitize.fragment('<p>1st <strong>sanitized </strong>comment</p>', Sanitize::Config::RELAXED) %>が、出力は<p>1st <strong>sanitized </strong>comment</p>で、私はそれが間違っているかどうか、またはそれに従う方法がわからない。

答えて

1

何も問題はありません。 Sanitize::Config::RELAXED<p><strong>を許可します。

文字列を完全に消毒するには、2番目の引数をスキップします。

<%= Sanitize.fragment('<p>1st <strong>sanitized </strong>comment</p>' %> 

=> `1st sanitized comment` 

あなたは文字列がhtml_safe

<%= Sanitize.fragment('<p>1st <strong>sanitized </strong>comment</p>', Sanitize::Config::RELAXED).html_safe %> 

=>第一消毒コメント

+0

が本当らしいとしてそれをマークし、タグをエスケープせずに "そのまま" 表示されていることを懸念している場合。しかし、 'html_safe'自体を適用するのは消毒のポイントではありませんか?私は、 'html_safe'の結果を生成するための浄化の目的ではなく、さらにその事前定義された設定(BASIC、RELAXED ...) – Catalin

+1

私にとって、 'sanitize'のポイントは悪質なHTMLを削除することで、'#html_safe'をある程度信頼できるようにすることです。私が知っている限り、出力はそのまま '#html_safe? 'で' false'に応答しますので、追加ステップが必要です。また、 '#html_safe'を含むコントローラコードで出力文字列を構築し、' brakeman'のようなチェッカーが誤検出をしないようにしたいと思います。 – SteveTurczyn

+0

私はもう1つの質問があります。良い練習として、コントローラーの出力を消毒することは、単純に次のような問題でなければなりません: 'def show @comment = @ post.comments.find(params [:id])@ comment.content = Sanitize.fragment(@ comment.content)。 html_safe()end'? – Catalin

関連する問題