2012-10-24 4 views
1

스레드 How do you configure HttpOnly cookies in tomcat/java webapps?에서 요소에 지정된 공급 업체 특정 useHttpOnly 특성을 지원한다고 Tomcat 5.5. (> 28)가 가정 한 것으로 보았습니다.Tomcat 5.5.36의 HttpOnly 쿠키

내 server.xml에 구성된 모든 컨텍스트에이 속성을 추가했습니다.

그러나 JSESSIONID에만 "; httpOnly" 플래그가 추가되었습니다. 다른 모든 쿠키는 정확히 useHttpOnly="true"을 추가하기 전과 같습니다.

Set-Cookie= 
JSESSIONID=25E8F...; Path=/custompath; HttpOnly 
mycustomcookie1=xxxxxxx; Path=/ 
mycustomcookie2=1351101062602; Path=/ 
mycustomcookie3=0; Path=/ 
mycustomcookie4=1; Path=/; Secure 
mycustomcookie5=4000; Expires=Sat, 22-Oct-2022 17:51:02 GMT; Path=/ 

변경할 사항이 있습니까?

(바람둥이 6 또는 7로 업그레이드가 지금은 옵션이 아닙니다. 우리의 시스템은 바람둥이 5.5 기반의 타사 프레임 워크 사용)

답변

1

서버의 useHttpOnly 구성은 실제로 같은 JSESSIONID 같은 서버 제어 쿠키 적용을 만.

웹 응용 프로그램 제어 쿠키의 경우 수동으로 전체 쿠키 헤더를 수동으로 만들어야합니다. setHttpOnly() 메소드가 Servlet 3.0에 도입 되었기 때문에 Cookie 클래스는 적합하지 않지만 Tomcat 5.5는 Cookie 클래스에이 메소드가없는 Servlet 2.4 컨테이너로 사용하고 있습니다. Servlet 3.0 호환 컨테이너 인 Tomcat 7 이상으로 업그레이드해야합니다. 다음과 같이

은 수동으로 질문 한 쿠키의를 만들 수 있습니다

response.addHeader("Set-Cookie", "mycustomcookie1=xxxxxxx; Path=/; HttpOnly"); 
response.addHeader("Set-Cookie", "mycustomcookie2=1351101062602; Path=/; HttpOnly"); 
response.addHeader("Set-Cookie", "mycustomcookie3=0; Path=/; HttpOnly"); 
response.addHeader("Set-Cookie", "mycustomcookie4=1; Path=/; Secure; HttpOnly"); 
response.addHeader("Set-Cookie", "mycustomcookie5=4000; Expires=Sat, 22-Oct-2022 17:51:02 GMT; Path=/; HttpOnly"); 

그것은 참으로 ;로 구분 쿠키 헤더 값으로 HttpOnly 속성을 추가, 단지 문제.

투명하게 모든 쿠키에이를 적용 할 경우, 당신은 addHeader()setHeader() 방법은 그에 따라 Set-Cookie 헤더가 설정되어 있는지 확인 오버라이드 (override) 만약 그렇다면되어되는 것을 특징으로하는 사용자 정의 HttpServletResponseWrapper를 제공 할 수 있습니다 값이없는 경우 ;HttpOnly을 값에 추가하십시오. 이렇게하면 addCookie()을 계속 사용할 수 있습니다.

+0

이렇게 슬프다 ...이 설정을 서버에 전역 적으로 적용하기를 원한다. 나는'response.addCookie (cookie)'에서'response.addHeader (...)'로 호출을 변경하고 수동으로 쿠키를 생성하는 코드를 다 쓰고 싶지 않다. 서블릿 3.0 컨테이너가 있더라도 생성 된 모든 쿠키에'setHttpOnly()'를 호출하는 것은 힘들 것입니다. ('HttpServletResponseWrapper' 아이디어를 시도해 볼 것입니다.) –

+0

많은 쿠키를 다루고 있습니까? 코드에 다음과 같은 리팩터링이 필요할 수도 있습니다. – BalusC

+0

그들은 그다지 많지 않습니다. 약 12 명. 문제는 코드가 보안, 만료 경로 등의 쿠키 클래스 기능을 사용하고 있다는 것입니다. 코드를 addHeader로 변경하면 모든 것을 직접 처리해야합니다. 또한, 코드는 제 것이 아니며 적어도 4 세 이상을 다루고 있습니다. –