2011-08-05 6 views
1

activerecordを使用してリッチテキストエディタの内容をデータベースに保存すると、htmlコンテンツがhtmlコンテンツから削除されるという問題が発生しています(html_safeはそれ)。私は、コンテンツ文字列のhtml_safeメソッドをオーバーライドしてみましたが、何も動作しません。Rails 3でXSSとHTMLサニタイズを無効にする

content = "<p>hello</p>" 
@article.content = content 
puts @article.content # "<p>hello</p>" 
@article.save 
puts @article.content # "<>hello</>" 

どのように特定の列のactiverecordのhtmlストリッピング機能を無効にできますか?

答えて

0

は、この問題に問題が判明Railsのかと何も藤堂ましたXSSストリッピング。私が持っていたコードは、文字列を変更し、元の入力を変更させていた別の場所に結果を保存することでした。私はstring.dupを使用して問題を解決し、元の文字列をコピーして、影響を受けないようにしました。

-3

これにはオプションが必要です。

使用しているリッチテキストエディタのドキュメントをご覧ください。

0

raw(string)の方法を使用できますが、XSS攻撃に対してvunlerableになります。 もう1つのオプションは、markdownを詳しく見ています。

+0

問題は、生のメソッドがヘルパーレベルの関数であり、ActiveRecordでどのようにセーブされるのかを示すことができないということです。 – matsko

1

すでにhis answerに記載されているfrank blizzardは、自分自身を脆弱な2つのXSS攻撃にします。

しかし、あなたは、あなたの著者を信頼している場合、この列は2、ディスプレイ安全であることを、あなたはあなたのArticleモデルでこのような何かを行うことができます

class Article < ActiveRecord::Base 
    def content 
    attributes[:content].html_safe 
    end 
end 
+0

html_safeメソッドは、最初にストリッピングを引き起こすものです。 – matsko

関連する問題