tomcat 서블릿에서 jsessionid를 비활성화 할 수 있습니까?
Tomcat의 URL에서 jsessionid를 끌 수 있습니까? jsessionid는 검색 엔진 친화적이지 않은 것 같습니다.
이 필터를 사용하여 검색 엔진 만 비활성화 할 수 있지만 검색 엔진이 비우호적 인 것보다 더 나쁘기 때문에 모든 응답에 대해 사용하는 것이 좋습니다. 특정 보안 공격에 사용할 수있는 세션 ID를 노출합니다 ( 추가 정보 ).
Tomcat 6 (6.0.30 이전)
tuckey rewrite 필터를 사용할 수 있습니다 .
Tuckey 필터 구성 예 :
<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 이상)
당신은 사용할 수 있습니다 disableURLRewriting를 이 동작을하지 않도록 상황에 맞는 구성.
Tomcat 7 및 Tomcat 8
에서 톰캣 7 이후 당신은 세션 설정에 다음을 추가 할 수 있습니다.
<session-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>
<session-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>
Tomcat 7 및 Tomcat 8은 URL 기반 세션을 비활성화하는 web-app web.xml에서 위의 구성을 지원합니다.
Tomcat 6.0에서 다음을 사용하여이 작업을 수행 할 수 있습니다. disableURLRewriting
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
예 :
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="PATH_TO_WEBAPP" path="/CONTEXT" disableURLRewriting="true">
</Context>
Tomcat 7.0 내에서 이는 애플리케이션 내에서 다음과 같이 제어됩니다. ServletContext.setSessionTrackingModes ()
Tomcat 7.0은 Servlet 3.0 사양을 따릅니다.
를 사용 Filter
를 래핑 모든 URL에 response
A의 HttpServletResponseWrapper
단지에서 변경되지 않은 URL을 반환 encodeRedirectUrl
, encodeRedirectURL
, encodeUrl
와 encodeURL
.
Pool의 답변에서 인용 :
tuckey rewrite 필터를 사용할 수 있습니다.
이 필터를 사용하여 검색 엔진 만 비활성화 할 수 있지만 검색 엔진이 비우호적 인 것보다 더 나쁘기 때문에 모든 응답에 대해 사용하는 것이 좋습니다. 특정 보안 공격에 사용할 수있는 세션 ID를 노출합니다 (추가 정보).
jsessionid가 더 이상 표시되지 않더라도 쿠키 기반 세션 처리를 허용한다는 점을 언급 할 가치가 있습니다. (그의 다른 게시물에서 발췌 : web.xml에서 HttpSession을 끌 수 있습니까? )
추신. 댓글을 달만한 평판이 충분하지 않다면 위의 게시물에 댓글로 추가했을 것입니다.
Tomcat 6.0에서는 Tomcat 설치의 / config 경로에서 context.xml로 disableURLRewriting = "true"를 사용할 수 있습니다.
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
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>
...
Now tomcat output it's search engine friendly...
Enjoy
Also if you have Apache in front of Tomcat you can strip out the jsession with a mod_rewrite filter.
Add the following to your apache config.
#Fix up tomcat jsession appending rule issue
RewriteRule ^/(.*);jsessionid=(.*) /$1 [R=301,L]
This will do a 301 redirect to a page without the jsessionid. Obviously this will completely disable url jsessionid's but this is what I needed.
Cheers, Mark
By default, cookies are enabled in Tomcat server(you can explicitly set it by using cookies=true in element of server.xml). Enabling cookies means that jsessionID will not be appended to URL's since session will be managed using cookies. However, even after cookies are enabled, jsessionID's are appended to the URL for first request as the webserver doesn't know at that stage if cookies have been enabled. To remove such jsessionIDs, you can using tuckey rewrite rules:
You can find more information on this at 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>
You can find more information on this at http://javatechworld.blogspot.com/2011/01/how-to-remove-jsessionid-from-url-java.html
참고URL : https://stackoverflow.com/questions/962729/is-it-possible-to-disable-jsessionid-in-tomcat-servlet
'code' 카테고리의 다른 글
Dot Net Core 1.0.0 VS 2015 Tools Preview 2 설치 문제 (0) | 2020.11.10 |
---|---|
목록에서 변환 (0) | 2020.11.10 |
Eclipse에서 유효성 검사 오류를 어떻게 지우나요? (0) | 2020.11.10 |
JavaScript : 객체를 반환하는 함수 (0) | 2020.11.10 |
requestWhenInUseAuthorization이 사용자에게 위치에 대한 액세스를 요청하지 않는 이유는 무엇입니까? (0) | 2020.11.09 |