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
- header variables go missing in production
- http://wiki.nginx.org/HttpCoreModule#underscores_in_headers
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