2016-08-01 80 views
0

我在我的應用程序中使用了brakeman來生成掃描報告。它以高可信度生成了許多跨站腳本安全警告。 在它們中的一個是:如何修復brakeman生成的rails中的Cross Site Scripting安全警告?

直列鄰近線47呈現未逸出參數值:呈現(文本=> 「意外的EventType#{PARAMS [」 的EventType 「]}」,{:狀態=> 406}) 應用/controllers/event_controller.rb。 在下面顯示的控制器方法中,第一行顯示上述警告。

我在link看過,但無法修復。請幫忙。 這是控制器的代碼:

def purchase 

    render :status => 406, :text => "Unexpected EventType #{params['EventType']}" and return unless params['EventType'] == 'purchased' 
    @account = Account.new 
    render :status => 406, :text => "Could not find Plan #{params['Plan']}" and return unless @account.plan = @plan = SubscriptionPlan.find_by_name(params['Plan']) 

    end 

回答

2

當使用render :text => ...滑軌仍然呈現輸出作爲HTML(與內容類型text/html)。由於您的代碼直接在輸出中輸入用戶輸入(params['EventType']),這是一個經典的跨站腳本漏洞。

您有兩種選擇。使用render :plain代替(其將與內容類型的text/plain代替HTML渲染):

render :status => 406, :plain => "Unexpected EventType #{params['EventType']}" 

或逸出所述用戶輸入:

render :status => 406, :text => "Unexpected EventType #{ERB::Util.html_escape(params['EventType'])}"