2013-07-29 18 views
8

Stiamo usando nginx per scarico del traffico HTTPS, il proxy ad un JasperServer installato localmente (5.2) in esecuzione sulla porta 8080.Esecuzione JasperServer dietro nginx: Potenziale attacco CSRF

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

Quando si accede alla JasperServer direttamente sulla sua tutto porto è ok. Quando si accede al servizio tramite nginx alcune funzionalità sono rotti (ad esempio, la modifica di un utente nell'interfaccia utente JasperServer) e il registro JasperServer ha voci come questo:

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

Dopo un po 'di debug abbiamo trovato la causa di questo:

Nella sua configurazione standard, nginx non inoltra le intestazioni delle richieste che contengono caratteri di sottolineatura nel loro nome. Jasperserver (e il framework OWASP) tuttavia, per impostazione predefinita, utilizza underscore per la trasmissione del token csrf (JASPER_CSRF_TOKEN e OWASP_CSRFTOKEN rispettivamente).

soluzione è a uno:

  • nginx: permettono di sottolineatura nelle intestazioni

    server { 
        ... 
        underscores_in_headers on; 
    
  • JasperServer: cambiano nome della configurazione gettone in jasperserver-pro/WEB-INF/esapi/Owasp.CsrfGuard.properties

vedi anche qui:

+0

Stesso problema, ma le risoluzioni qui non ha funzionato per me - ho inviato una nuova domanda in modo da informazioni aggiuntive si spera verrà mostrata lì: http://stackoverflow.com/ questions/35691799/jasperserver-proxy-csrf-error – radshop

risposta

4

risposto io - Speriamo che questo sia di qualche utilità per gli altri, anche

1

ho avuto questo problema con JasperServer 5.5 AWS AMI

più specifiche:

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

Modifica:

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

A:

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

Ti dispiace condividere la configurazione di nginx. Non sono sicuro di dove sia il problema, ma l'AMI di jasperserver 6 aws mi fa strappare i capelli. –

+0

Non uso più jaspersoft. Da quello che ricordo, il comportamento predefinito di nginx è rimuovere i caratteri di sottolineatura dalle intestazioni HTTP. Pertanto, la mia soluzione era quella di impostare Jaspersoft per leggere le intestazioni HTTP senza il carattere di sottolineatura. –