5

アプリケーションでスキャン レポートを生成するために Brakeman を使用しました。信頼度の高いクロス サイト スクリプティングのセキュリティ警告が多数生成されました。それらの1つは次のとおりです。

Unescaped parameter value rendered inline near line 47: render(text => "Unexpected EventType #{params["EventType"]}", { :status => 406 })
app/controllers/event_controller.rb.

以下に示すコントローラ メソッドでは、1 行目に上記の警告が表示されています。

リンクで見ましたが、修正できませんでした。助けてください。そして、これはコントローラーコードです:

  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
4

1 に答える 1

10

render :text => ...Railsを使用している場合でも、出力は HTML としてレンダリングされます ( content type を使用text/html)。あなたのコードはユーザー入力 ( params['EventType']) を出力に直接入れているため、これは典型的なクロスサイト スクリプティングの脆弱性です。

2 つのオプションがあります。代わりに使用します ( HTML の代わりにrender :plainコンテンツ タイプでレンダリングされます):text/plain

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

またはユーザー入力をエスケープします。

render :status => 406, :text => "Unexpected EventType #{ERB::Util.html_escape(params['EventType'])}"
于 2016-08-01T15:04:06.433 に答える