2011-02-09 49 views
0

我想在我的rails 2.0.2應用程序中實現安全的Erb插件。我是 使用此版本的項目特定的目的與Ruby 1.8.7。安全的Erb插件實現問題

我已經提到了以下教程:

http://www.railslodge.com/plugins/430-safe-erb http://agilewebdevelopment.com/plugins/safe_erb

因爲我是一個新手,以 我可以讓只有一些上面的網址的感Rails和Rails相關的插件。老實說我也發現上面的 教程非常通用。

從上面的教程中,我真的無法在很大程度上將這個插件的用途與現實世界的意義聯繫起來。你能否在日常現實世界中使用它?

我已經實現了一個書籍appl,它有一個作者,標題和 發佈日期。我目前面臨的問題實施這個插件的污點 功能

在第二個教程中,他們說我們需要調用受污染的?來自Objects類的方法 。我在我的 books_controller.rb的創建方法中完成了此操作。爲創建方法的代碼如下所示:

def create 
    @book = Book.new(params[:book]) 
    @book.publishing_date = params[:publishing_date] 

    respond_to do |format| 

     if @book.save 
     flash[:notice] = 'Book was successfully created.' 
     format.html { redirect_to(@book) } 
     format.xml { render :xml => @book, :status => :created, 
:location => @book } 
     else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @book.errors, :status => 
:unprocessable_entity } 
     end 

     if @book.tainted? 
     flash[:notice] = 'Books are tainted' 
     format.html { redirect_to(@book) } 
     format.xml { render :xml => @book, :status => :created, 
:location => @book } 
     else 
     flash[:notice] = 'Books aren\'t tainted' 
     format.html { render :action => "new" } 
     format.xml { render :xml => @book.errors, :status => 
:unprocessable_entity } 
     end 

    end 

在創建一本新書記錄,我得到通知說「書是不被污染」。我有 將此插件複製到我的供應商/插件目錄中。

根據第二個教程網址,他們說:「當從IO讀取數據時,字符串變得污染,例如從數據庫或HTTP請求中讀取數據。」

但是,當我嘗試創建新書記錄時,它並未發生在我的案例中。 我是否需要明確地污染我正在使用的字符串輸入(其目前的 按照數據庫類型在varchar中 - 我猜這應該不是問題)。如果是的話,請告訴我如何去做 。

如果它不是上述情況..我錯過了什麼?

對此的任何見解將非常感激。

謝謝。

回答

2

首先,如果你可以移動到軌道3和Ruby 1.9.2,請這樣做。這幾乎肯定值得付出努力。 Rails 2.0.2於2007年發佈,至少3歲。 Rails 3比這個插件提供更好的保護,開箱即用。

話雖如此,safe-erb似乎提供了一些xss保護。通過https://github.com/abedra/safe-erb插件的版本,您不需要在應用程序的任何地方做任何特殊的事情來使其運行。只需將該插件安裝在供應商/插件中,您就可以開始使用了。您的控制器應該看起來就像沒有插件一樣。你可以避開被污染的區塊。

這個插件的工作方式是通過掛接到rails處理隊列的各個部分,並做一些污點管理,讓您的視圖自動拋出一個錯誤,只要有非用戶文本。要使用它,您不需要在模型和控制器中執行任何操作。在您的視圖中,確保數據在顯示之前通過h傳遞。

+0

Hi Anshul,謝謝你的回答..我想檢查一下這個插件所關注的污染的工作情況,因此我已經把「object.tainted?」 cmd在控制器中。你能給我一個例如的非轉義用戶文本..這樣我就可以將它作爲我的應用程序的測試用例來試用。這將幫助我也真正瞭解該插件的用處。 – boddhisattva 2011-02-12 09:22:33