2015-08-04 14 views
5

Đây có thể là một bản sao của câu hỏi này, nhưng giải pháp được đề xuất là không khả thi đối với chúng tôi: Protect against 3rd party callers of document.execCommand("ClearAuthenticationCache")? Clears our session cookiesLàm thế nào để bảo vệ JSESSIONID của tôi khỏi document.execCommand ("ClearAuthenticationCache")?

câu chuyện dài ngắn: IE có một cách để xóa cookie phiên sử dụng JavaScript - document.execCommand(“ClearAuthenticationCache”). Điều này được sử dụng trong một loạt các ứng dụng web bao gồm Outlook Web App (và có lẽ là nhiều ứng dụng khác). Vấn đề là MS trong trí tuệ vô hạn của họ đã quyết định rằng lệnh này nên cookie phiên rõ ràng cho tất cả các trang web mở (bạn có thể nói tôi hơi cay đắng không, tôi mất vài tháng để tìm nguồn JSESSIONID bị thiếu ngẫu nhiên).

Chúng tôi sử dụng JSESSIONID cũng như một mã thông báo khác để đảm bảo người dùng được xác thực. JSESSIONID là an toànhttpOnly. Điều này hoạt động tốt trừ khi JSESSIONID bị xóa bởi bên thứ ba. Vì vậy, câu hỏi của tôi là trong hai phần:

  1. Có cách nào để bảo vệ cookie phiên của mình không?

  2. Nếu không, có cách nào để tôi khôi phục một cách an toàn từ điều này không? Vì JSESSIONID là httpOnly, trình duyệt không thể đọc được, nhưng có thể có điều gì đó mà tôi không nghĩ đến.

Nếu có liên quan: chúng tôi sử dụng Tomcat 7 làm máy chủ web của chúng tôi. Ứng dụng này là một ứng dụng SaaS khá phức tạp và bảo mật khá quan trọng.

Cảm ơn tất cả.

Trả lời

1

Tôi tin rằng một trong các tùy chọn sau đây sẽ làm việc để bảo vệ phiên servlet từ document.execCommand(“ClearAuthenticationCache”):

Bạn có thể set the max-age of your JSESSIONID trong web.xml của bạn. Bằng cách đó, cookie JSESSIONID của bạn sẽ không còn là cookie phiên! Điều này sẽ làm cho ứng dụng web của bạn kém an toàn hơn vì cookie sẽ vẫn tồn tại sau khi đóng trình duyệt.

Bạn có thể bỏ hoàn toàn cookie HTTP và configure Tomcat to do session tracking with the SSL session ID. Tôi đã không bao giờ thực sự cấu hình nó bản thân mình, nhưng tôi sẽ đoán rằng điều này là an toàn hơn so với sử dụng các cookie JSESSIONID. Tuy nhiên, không thể sao chép phiên trong cấu hình này.

+1

Cảm ơn nhiều. Tùy chọn đầu tiên là không khả thi, nhưng tùy chọn thứ hai rất tốt có thể giải quyết vấn đề của chúng tôi. Chúng tôi có một thiết bị bảo mật riêng biệt xử lý SSL, nhưng nó có thể chuyển ID SSL trong tiêu đề cho Tomcat, tại thời điểm này chúng tôi có thể sử dụng nó làm sao lưu để nhận dạng JSESSIONID. – Pyro979

Các vấn đề liên quan