Cách vô hiệu hóa JSESSIONID trong URL trong java

Trong dự án gần đây, tôi gặp vấn đề với ứng dụng web khi chạy trên trình duyệt Internet Explore, với các trình duyệt khác đôi khi sẽ không trả về một đường dẫn có index.jsp;jsessionid=557206C363F1267A24AB769CA0DE4529.do ở sau cùng khi vào đường dẫn lần đầu tiên. 
Trong một số trường hợp, dự án cảu bạn đang lấy đường dẫn để thực hiện việc kiểm tra hay validation ở đâu đó trong dự án thì lúc này có thể bị bỏ qua và thực hiện việc kiểm tra khôn đúng bởi vì bây giờ đường dẫn không còn đúng như trước.

JSESSIONID được tạo ra từ đâu?

Cookie JSESSIONID được tạo ra khi session được khởi tạo. Hya nói cách khác khi các bạn gọi mã request.getSession()hoặcrequest.getSession(true). Nếu bạn chỉ muốn tạo ra phiên làm việc với session, hoặc bạn chỉ cần chạy trang jsp thì mặc định đã tạo cho bạn một JSESSIONID.

Hình ảnh và mẫu code minh họa vấn đề gặp phải

https://webapp.com/index.jsp;jsessionid=557206C363F1267A24AB769CA0DE4529.do

Đây cũng là một trong những vấn đề bảo mật của ứng dụng cũng như liên quan đến SEO.

Bạn có nhiều giải pháp để vô hiệu hóa url bằng nhiều cách, dưới đây là các cách tôi đưa ra:

Giải quyết vấn đề:

1. Bạn có thể viết lại đường dẫn url – URLRewrite

Bạn có thể sử dụng  servlet filter, chẳng hạn như Tuckey , cho phép bạn viết lại URL trước khi chúng nhận được mã của bạn.

2.Tomcat 7 với setSessionTrackingModes!

Với tomcat 7 thì bạn có thể sử dụng tại servlet nào mong muốn:

servletContext.setSessionTrackingModes(EnumSet.of(SessionTrackingMode.COOKIE));

 

3.Config tại file web.xml

Bạn có thể cấu hình tại file web.xml như sau:

<session-config>
     <tracking-mode>COOKIE</tracking-mode>
</session-config>

Một số trường hợp các bạn không dùng session nhưng vẫn tồn tại jsessionid tại trang jsp thì khắc phục như sau:

<%@ page session="false" %>

Chúc các bạn học tốt!

Happy coding!

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
x