2016-08-01 10 views
0

私はアプリケーションでスキャンレポートを生成するためにbrakemanを使用しました。これは、高い信頼性で多くのクロスサイトスクリプティングセキュリティ警告を生成しました。それらの1つで である:インライン線47近傍レンダリングbrakemanによって生成されたレールにクロスサイトスクリプティングのセキュリティ警告を修正するには?

エスケープさパラメータ値:レンダリング(テキスト=> "予期しないイベントタイプの#{paramsは[" イベントタイプ "]}"、{:ステータス=> 406}) アプリ/controllers/event_controller.rb。 下記のコントローラメソッドでは、1行目に上記の警告が表示されています。

私は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 => ...レールを使用して静止(コンテンツタイプtext/html有する)HTMLなどの出力をレンダリングする: は、これはコントローラのコードです。あなたのコードはユーザー入力(params['EventType'])を直接出力に入れているので、これは古典的なクロスサイトスクリプティングの脆弱性です。

2つのオプションがあります。代わりに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'])}" 
関連する問題