2009-06-07 41 views

Trả lời

63

Bạn có thể tắt chỉ cho các công cụ tìm kiếm bằng bộ lọc này, nhưng tôi khuyên bạn nên sử dụng cho tất cả các phản hồi vì nó tồi tệ hơn công cụ tìm kiếm không thân thiện. Nó cho thấy ID phiên có thể được sử dụng cho một số khai thác bảo mật nhất định (more info).

Tomcat 6 (pre 6.0.30)

Bạn có thể sử dụng tuckey rewrite filter.

Example config cho Tuckey lọc:

<outbound-rule encodefirst="true"> 
    <name>Strip URL Session ID's</name> 
    <from>^(.*?)(?:\;jsessionid=[^\?#]*)?(\?[^#]*)?(#.*)?$</from> 
    <to>$1$2$3</to> 
</outbound-rule> 

Tomcat 6 (6.0.30 trở đi)

Bạn có thể sử dụng disableURLRewriting trong cấu hình bối cảnh để vô hiệu hóa hành vi này.

Tomcat 7 và Tomcat 8

Từ Tomcat 7 onwards bạn có thể thêm như sau trong cấu hình phiên.

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

Tại sao sử dụng một Ổ ghi khi bạn chỉ có thể không tạo cookie phiên? –

+1

Vui lòng xem ngày cho câu trả lời này. Tomcat 7 và tính năng theo dõi chế độ không có sẵn trong năm 2009. Cập nhật với mỗi thông tin phiên bản ngay bây giờ. – Pool

+0

Tomcat 6 hỗ trợ thuộc tính 'disableURLRewriting' trên phần tử Context. Xem http://tomcat.apache.org/tomcat-6.0-doc/config/context.html –

13

Sử dụng một Filter trên tất cả các URL kết thúc tốt đẹp response trong một HttpServletResponseWrapper mà chỉ đơn giản trả về URL không thay đổi so encodeRedirectUrl, encodeRedirectURL, encodeUrlencodeURL.

+3

Mã mẫu có sẵn tại đây: http://randomcoder.com/articles/jsessionid-considered-harmful Máy chủ có thể ngừng hoạt động; Tôi đã phải lấy nó ra khỏi bộ nhớ cache của Google. –

+0

Tôi thích phương pháp này. – vsingh

5

Trích từ câu trả lời của Pool:

Bạn có thể sử dụng bộ lọc tuckey viết lại.

Bạn có thể vô hiệu hóa chỉ tìm kiếm động cơ sử dụng bộ lọc này, nhưng tôi muốn tư vấn sử dụng nó cho tất cả các phản ứng như nó tồi tệ hơn chỉ search engine không thân thiện. Nó cho thấy ID phiên có thể được sử dụng để bảo mật nhất định khai thác (thông tin thêm).

Điều đáng nói là điều này sẽ vẫn cho phép xử lý phiên dựa trên cookie ngay cả khi jsessionid không hiển thị nữa. (được lấy từ bài khác của anh ấy: Can I turn off the HttpSession in web.xml?)

PS. Tôi không có đủ danh tiếng để bình luận, nếu không tôi sẽ thêm điều này vào bài viết của anh ta ở trên làm bình luận.

2

Ngoài ra nếu bạn có Apache ở phía trước Tomcat, bạn có thể loại bỏ jsession bằng bộ lọc mod_rewrite.

Thêm phần sau vào cấu hình apache của bạn.

#Fix up tomcat jsession appending rule issue 
RewriteRule ^/(.*);jsessionid=(.*) /$1 [R=301,L] 

Điều này sẽ chuyển hướng 301 đến trang không có suy nghĩ. Rõ ràng điều này sẽ hoàn toàn vô hiệu hóa url jsessionid nhưng đây là những gì tôi cần.

Chúc mừng, Đánh dấu

2

Theo mặc định, các tập tin cookie được kích hoạt trong máy chủ Tomcat (bạn rõ ràng có thể cài đặt nó bằng cách sử dụng các tập tin cookie = true trong yếu tố server.xml). Bật cookie có nghĩa là jsessionID sẽ không được thêm vào URL vì phiên sẽ được quản lý bằng cookie. Tuy nhiên, ngay cả sau khi cookie được bật, jsessionID được nối vào URL cho yêu cầu đầu tiên vì máy chủ web không biết ở giai đoạn đó nếu cookie đã được bật. Để loại bỏ jsessionIDs như vậy, bạn có thể sử dụng quy tắc viết lại tuckey:

Bạn có thể tìm thêm thông tin về vấn đề này tại http://javatechworld.blogspot.com/2011/01/how-to-remove-jsessionid-from-url-java.html

<outbound-rule encodefirst="true"> 
    <note>Remove jsessionid from embedded urls - for urls WITH query parameters</note> 
    <from>^/(.*);jsessionid=.*[?](.*)$</from> 
    <to encode="false">/$1?$2</to> 
</outbound-rule> 

<outbound-rule encodefirst="true"> 
    <note>Remove jsessionid from embedded urls - for urls WITHOUT query parameters</note> 
    <from>^/(.*);jsessionid=.*[^?]$</from> 
    <to encode="false">/$1</to> 
</outbound-rule> 

Bạn có thể tìm thêm thông tin về vấn đề này tại http://javatechworld.blogspot.com/2011/01/how-to-remove-jsessionid-from-url-java.html

+0

Lưu ý rằng trình duyệt web vẫn cần bật cookie. – BalusC

19

Có thể làm này trong Tomcat 6.0 với: disableURLRewriting

http://tomcat.apache.org/tomcat-6.0-doc/config/context.html

ví dụ:

<?xml version='1.0' encoding='utf-8'?> 
<Context docBase="PATH_TO_WEBAPP" path="/CONTEXT" disableURLRewriting="true"> 
</Context> 

Trong Tomcat 7.0, điều này được kiểm soát như sau trong một ứng dụng: ServletContext.setSessionTrackingModes()

Tomcat 7.0 sau các Servlet 3.0 thông số kỹ thuật.

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

Tomcat 7 và Tomcat 8 hỗ trợ cấu hình ở trên trong web.xml ứng dụng web của bạn, tắt các phiên dựa trên URL.

+3

Đừng quên sử dụng web-app_3.0 xsd: koppor

4

Trong Tomcat 6.0 bạn có thể sử dụng disableURLRewriting = "true" vào context.xml từ đường dẫn/config của bạn trong bản cài đặt tomcat.

http://tomcat.apache.org/tomcat-6.0-doc/config/context.html

tập tin context.xml

<?xml version='1.0' encoding='utf-8'?> 
<!-- 
    Licensed to the Apache Software Foundation (ASF) under one or more 
    contributor license agreements. See the NOTICE file distributed with 
    this work for additional information regarding copyright ownership. 
    The ASF licenses this file to You under the Apache License, Version 2.0 
    (the "License"); you may not use this file except in compliance with 
    the License. You may obtain a copy of the License at 

     http://www.apache.org/licenses/LICENSE-2.0 

    Unless required by applicable law or agreed to in writing, software 
    distributed under the License is distributed on an "AS IS" BASIS, 
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
    See the License for the specific language governing permissions and 
    limitations under the License. 
--> 
<!-- The contents of this file will be loaded for each web application --> 
<Context disableURLRewriting="true"> 

    <!-- Default set of monitored resources --> 
    <WatchedResource>WEB-INF/web.xml</WatchedResource> 

    <!-- Uncomment this to disable session persistence across Tomcat restarts --> 
    <!-- 
    <Manager pathname="" /> 
    --> 

    <!-- Uncomment this to enable Comet connection tacking (provides events 
     on session expiration as well as webapp lifecycle) --> 
    <!-- 
    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> 
    --> 

</Context> 

...

Bây giờ đầu ra tomcat đó là công cụ tìm kiếm thân thiện với người ...

Thưởng thức

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