2011-08-05 67 views
1
我在那裏時,我有我的富文本編輯器中的內容保存到使用ActiveRecord HTML內容數據庫被剝離的HTML內容的問題

(我認爲它觸發html_safe上它)。我試着覆蓋內容字符串上的html_safe方法,但沒有任何效果。禁用XSS和HTML清理用Rails 3

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

你怎麼可以重寫HTML剝ActiveRecord的能力爲特定列?

回答

0

原來的問題,這個問題是使用Rails或沒有待辦事項XSS剝離。我得到的代碼是修改一個字符串,然後在其他地方保存導致原始輸入被改變的結果。我通過使用string.dup來複制原始字符串以解決問題,以免受到影響。

-3

應該有這樣的一個選項。

我建議你看一看,你正在使用的富文本編輯器的文檔。

0

可以使用raw(string)方法,但它會讓你對vunlerable XSS攻擊。 另一種選擇將採取更深入地瞭解markdown

+0

的問題是,原始方法是一個輔助級別的功能,它並沒有與它如何被保存ActiveRecord的東西待辦事項。 – matsko

1

由於frank blizzardhis answer已經說了,你讓你自己脆弱的2 XSS攻擊。

但是,如果你信任你的作家,這列是安全的兩種顯示,你可以做這樣的事情在你的Article模型

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

html_safe方法是首先導致剝離的原因。 – matsko