2013-07-29 44 views
8

Chúng tôi đang sử dụng nginx để giảm tải giao thông https, proxy để một jasperserver cài đặt cục bộ (5.2) chạy trên cổng 8080.Chạy jasperserver đằng sau nginx: Tiềm năng CSRF tấn công

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

Khi truy cập vào jasperserver trực tiếp trên cổng tất cả mọi thứ của nó Ổn. Khi truy cập vào các dịch vụ thông qua nginx một số chức năng bị phá vỡ (ví dụ như chỉnh sửa một người dùng trong giao diện người dùng jasperserver) và nhật ký jasperserver có mục như thế này:

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

Sau khi một số lỗi, chúng tôi tìm ra nguyên nhân cho việc này:

Trong nginx cấu hình tiêu chuẩn của nó không phải là tiêu đề yêu cầu chuyển tiếp có chứa dấu gạch dưới trong tên của chúng. Tuy nhiên, Jasperserver (và khung OWASP) mặc định sử dụng dấu gạch dưới để truyền mã thông báo csrf (JASPER_CSRF_TOKENOWASP_CSRFTOKEN tương ứng).

Giải pháp là một trong hai:

  • nginx: cho phép dấu gạch trong tiêu đề

    server { 
        ... 
        underscores_in_headers on; 
    
  • jasperserver: thay đổi tên cấu hình thẻ trong jasperserver-pro/WEB-INF/esapi/Owasp.CsrfGuard.properties

Xem thêm ở đây:

+0

Cùng một vấn đề, nhưng các nghị quyết ở đây không làm việc cho tôi - tôi đăng một câu hỏi mới để thông tin hy vọng bổ sung sẽ hiện ra ở đó: http://stackoverflow.com/ question/35691799/jasperserver-proxy-csrf-error – radshop

Trả lời

4

trả lời nó bản thân mình - hy vọng đây là một số sử dụng cho người khác, quá

1

Tôi có vấn đề này với Jasperserver 5,5 AWS AMI

cụ thể hơn:

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

Thay đổi:

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

Để:

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

Bạn có nhớ chia sẻ cấu hình nginx của mình không. Tôi không chắc chắn vấn đề là ở đâu nhưng jasperserver 6 aws AMI dường như làm cho tôi kéo tóc của tôi đi. –

+0

Tôi không sử dụng jaspersoft nữa. Từ những gì tôi nhớ, hành vi mặc định của nginx là xóa dấu gạch dưới khỏi tiêu đề HTTP. Vì vậy, giải pháp của tôi là đặt Jaspersoft để đọc các tiêu đề HTTP mà không có dấu gạch dưới. –