2013-07-29 7 views
8

Wir verwenden nginx für https-Verkehr-Offloading, Proxying auf eine lokal installierte JapserServer (5.2) läuft auf Port 8080.Lauf JapserServer hinter nginx: Mögliche CSRF-Angriff

internet ---(https/443)---> nginx ---(http/8080)---> tomcat/jasperserver 

Wenn die JapserServer Zugriff direkt auf den Hafen alles ist gut. Beim Zugriff auf den Dienst über nginx einige Funktionalitäten aufgebrochen werden (zB einen Benutzer in der JapserServer UI Bearbeitung) und die JapserServer Protokoll enthält Einträge wie folgt aus:

CSRFGuard: potential cross-site request forgery (CSRF) attack thwarted (user:%user%, ip:%remote_ip%, uri:%request_uri%, error:%exception_message%) 

Nach einiger Debuggen wir die Ursache dafür gefunden:

In der Standardkonfiguration leitet nginx keine Anforderungsheader weiter, die Unterstriche in ihrem Namen enthalten. Jasperserver (und das OWASP-Framework) verwenden jedoch standardmäßig Unterstriche für die Übertragung des csrf-Tokens (JASPER_CSRF_TOKEN bzw. OWASP_CSRFTOKEN).

Lösung ist entweder:

  • nginx: allow Unterstrichen in Header

    server { 
        ... 
        underscores_in_headers on; 
    
  • JapserServer:

    : token Konfigurationsnamen jasperserver-pro/WEB-INF/esapi/Owasp.CsrfGuard.properties

Auch hier sehen in ändern

+0

gleiche Problem, aber die Beschlüsse hier nicht für mich arbeiten - ich gepostet eine neue Frage so hoffentlich zusätzliche Informationen dort angezeigt wird: http://stackoverflow.com/ Fragen/35691799/Jasperserver-Proxy-Csrf-Fehler – radshop

Antwort

4

Beantwortet es mich - hoffentlich von Nutzen ist, anderen zu, auch

1

ich mit JapserServer dieses Problem hatte 5,5 AWS AMI

Speziellere:

/var/lib/tomcat7/webapps/jasperserver-pro/WEB-INF/esapi/Owasp.CsrfGuard.properties 

Änderung:

org.owasp.csrfguard.TokenName=JASPER_CSRF_TOKEN 
org.owasp.csrfguard.SessionKey=JASPER_CSRF_SESSION_KEY 

An:

org.owasp.csrfguard.TokenName=JASPERCSRFTOKEN 
org.owasp.csrfguard.SessionKey=JASPERCSRFSESSIONKEY 
+0

Haben Sie etwas dagegen, Ihre nginx-Konfiguration zu teilen. Ich bin mir nicht sicher, wo das Problem liegt, aber Jasperserver 6 aws AMI scheint mich dazu zu bringen, mir die Haare auszuziehen. –

+0

Ich benutze Jaspersoft nicht mehr. Soweit ich mich erinnere, ist das Standardverhalten von nginx das Entfernen von Unterstrichen aus HTTP-Headern. Daher bestand meine Lösung darin, Jaspersoft so einzustellen, dass HTTP-Header ohne Unterstrich gelesen werden. –