2013-08-01 44 views
23

Tôi có một ứng dụng web đang chạy trên máy chủ Tomcat 7. Cookie có id phiên có mặc định là cờ HttpOnlySecure. Tôi muốn vô hiệu cờ này cho cookie JSESSIONID. Nhưng nó sẽ không hoạt động. Tôi đã thay đổi điều này trong tập tin web.xml của mình nhưng nó không hoạt động.Cookie Tomcat 7 sessionid vô hiệu hóa chỉ http và an toàn

<session-config> 
    <session-timeout>20160</session-timeout> 
    <cookie-config> 
     <http-only>false</http-only> 
     <secure>false</secure> 
    </cookie-config> 
</session-config> 

Tôi biết đây là một nguy cơ bảo mật vì kẻ tấn công có thể lấy cắp cookie và chiếm đoạt phiên nếu anh ta phát hiện thấy xss vuln.

Cookie JSESSIONID phải được gửi cùng với HTTP và HTTPS và với các yêu cầu AJAX.

Edit:

Tôi đã successfuly vô hiệu hóa HttpOnly cờ bằng cách thêm tùy chọn sau đây để các conf/context.xml file:

<Context useHttpOnly="false"> 
.... 
</Context> 
+0

Vui lòng đóng câu hỏi này, bạn đã nhận được câu trả lời. Cảm ơn. – eze1981

+0

bạn có tìm hiểu cách vô hiệu hóa bảo mật không? – wutzebaer

+2

Cập nhật gần đây của Chrome làm cho điều này rất quan trọng! https://chromium.googlesource.com/chromium/src/+/a26e439d02baa9514b09c637bf5fa9f6790c4c3e –

Trả lời

1

tôi không tìm thấy một giải pháp trong Tomcat này nhưng nếu bạn' sử dụng apache làm proxy ngược lại bạn có thể làm:

Header edit* Set-Cookie "(JSESSIONID=.*)(; Secure)" "$1" 

với mod_headers sẽ xóa tiêu đề trên đường quay lại để xóa cờ an toàn. Không đẹp nhưng hoạt động nếu điều này là rất quan trọng.

0

Ngoài giải pháp George Powell trên cho Apache, nếu bạn đang ở trên IIS, bạn có thể giải quyết nó như sau:

  1. Cài đặt module IIS URL Rewrite
  2. Thêm dòng sau vào web.config của bạn

<rewrite> 
 
    <outboundRules> 
 
    <rule name="RemoveSecureJessionID"> 
 
     <match serverVariable="RESPONSE_Set-Cookie" pattern="^(.*JSESSIONID.*)Secure;(.*)$" /> 
 
     <action type="Rewrite" value="{R:1}{R:2}" /> 
 
    </rule> 
 
    </outboundRules> 
 
</rewrite>

Giải pháp này là từ Pete Freitag's blog

Như đã nêu ở trên, vì bản cập nhật Chrome gần đây (tháng 1 năm 2017), điều này đã trở thành vấn đề.