2016-08-01 6 views
0

Ich benutzte Brememan zur Erstellung von Scan-Berichten in meiner Anwendung. Es hat viele Cross Site Scripting-Sicherheitswarnungen mit hohem Vertrauen erzeugt. In diesem ist einer von ihnen:Wie Sie die Cross Site Scripting Sicherheitswarnung in Schienen, die von Bremer generiert wurden, beheben?

Unescaped inline gerendert Parameterwert in der Nähe Linie 47: render (text => "Unexpected Eventtype # {params [" Eventtype "]}", {: status => 406}) App /controllers/event_controller.rb. Bei der nachfolgend gezeigten Controller-Methode zeigt die 1. Zeile die obige Warnung.

Ich habe in der link gesehen, konnte aber nicht beheben. Bitte helfen Sie. Und dies ist Controller-Code:

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 

Antwort

2

Wenn render :text => ... Rails noch die Ausgabe als HTML rendert (mit Inhaltstyp text/html). Da Ihr Code Benutzereingaben (params['EventType']) direkt in die Ausgabe einfügt, handelt es sich um eine klassische Schwachstelle bei der siteübergreifenden Skripterstellung.

Sie haben zwei Möglichkeiten. Verwenden Sie render :plain statt (die mit Inhaltstyp rendert text/plain statt HTML):

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

oder die Benutzereingabe entkommen:

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