Tomcat / Java WebApps에서 HttpOnly 쿠키를 어떻게 구성합니까?
문제
쿠키 보호 : HttpOnly 에 대한 Jeff의 블로그 게시물을 읽은 후.웹 애플리케이션에 HttpOnly 쿠키를 구현하고 싶습니다.
Tomcat에게 세션에 http 전용 쿠키를 사용하도록 어떻게 지시합니까?
해결책
httpOnly는 Tomcat 6.0.19 및 Tomcat 5.5.28부터 지원됩니다.
버그 44382에 대한 changelog 항목을 참조하세요.
버그 44382 에 대한 마지막 댓글은 "이것은5.5.x에 적용되며 5.5.28 이후에 포함될 것입니다. "그러나 5.5.28이 출시 된 것으로 보이지는 않습니다.
conf / context.xml 의 모든 웹앱에 httpOnly 기능을 사용하도록 설정할 수 있습니다. 라코 디스
내 해석은 conf / server.xml 의 원하는 컨텍스트 항목에 설정함으로써 개별 컨텍스트에서도 작동한다는 것입니다 (위와 같은 방식으로).
다른 팁
업데이트 : 여기에 JSESSIONID 항목은
오래된 컨테이너에만 해당됩니다. 사용하시기 바랍니다
jt는 현재 허용되는 답변입니다.
앱에서 쿠키를 설정할 때 라코 디스
그러나 많은 웹앱에서 가장 중요한 쿠키는 컨테이너에 의해 JSESSIONID 쿠키로 자동 설정되는 세션 식별자입니다.
이 쿠키 만 사용하는 경우 ServletFilter를 작성하여 나가는 동안 쿠키를 다시 설정하여 JSESSIONID를 HttpOnly로 강제 설정할 수 있습니다. http://keepitlocked.net/archive의 페이지 /2007/11/05/java-and-httponly.aspx http : //alexsmolen.com/blog/?p=16 은 필터에 다음을 추가 할 것을 제안합니다.
라코 디스
그러나 이렇게하면 모든 쿠키를 덮어 쓰고이 필터에서 여기에 명시한 내용 만 설정합니다.
JSESSIONID 쿠키에 추가 쿠키를 사용하는 경우이 코드를 확장하여 필터의 모든 쿠키를 설정해야합니다. 이것은 쿠키가 여러 개인 경우 훌륭한 솔루션은 아니지만 JSESSIONID 전용 설정에 허용되는 빠른 수정일 수 있습니다.
시간이 지남에 따라 코드가 발전함에 따라이 필터를 잊어 버리고 코드의 다른 곳에 다른 쿠키를 설정하려고 시도 할 때 당신을 기다리는 불쾌한 숨겨진 버그가 있다는 점에 유의하십시오. 물론 설정되지 않습니다.
이것은 정말 해킹입니다. Tomcat을 사용하고 컴파일 할 수 있다면 HttpOnly 지원을 Tomcat에 패치하라는 Shabaz의 훌륭한 제안을 살펴보십시오.
https 세션에서 "; secure"쿠키 플래그를 덮어 쓰지 않도록주의하십시오.이 플래그는 브라우저가 암호화되지 않은 http 연결을 통해 쿠키를 보내는 것을 방지하여 기본적으로 합법적 인 요청에 대해 https 사용을 무의미하게 만듭니다. 라코 디스
세션 쿠키의 경우 아직 Tomcat에서 지원되지 않는 것 같습니다.버그 보고서 Need to add support for HTTPOnly session cookie parameter 를 참조하세요.현재 다소 관련된 해결 방법은 여기 <에서 찾을 수 있습니다./ a>는 기본적으로 Tomcat을 수동으로 패치하는 것으로 요약됩니다.이 시점에서 쉽게 할 수있는 방법을 찾을 수 없습니다.
해결 방법을 요약하려면 5.5 소스 를 클릭 한 후 다음 위치에서 소스를 변경하십시오.
org.apache.catalina.connector.Request.java 라코 디스
org.apache.catalina.connectorResponse.addCookieInternal 라코 디스
웹 서버가 tomcat 7.0+와 같은 Serlvet 3.0 사양을 지원하는 경우 아래의 web.xml
를 다음과 같이 사용할 수 있습니다.
라코 디스
문서에 언급 된대로 : <인용구>
HttpOnly : 이 웹 응용 프로그램은 HttpOnly로 표시됩니다
보안 : 이 웹 애플리케이션에서 생성 된 세션 추적 쿠키가 있는지 여부 요청을 시작한 경우에도 보안으로 표시됩니다. 해당 세션은 HTTPS 대신 일반 HTTP를 사용합니다.
또한 HttpOnly를 켜면 jvm에 대한 상태 저장 액세스가 필요한 애플릿이 중단된다는 점에 유의해야합니다.
애플릿 http 요청은 jsessionid 쿠키를 사용하지 않으며 다른 바람둥이에 할당 될 수 있습니다.
명시 적으로 설정하는 쿠키의 경우 SimpleCookie 는 Apache Shiro 에서 제공합니다.javax.servlet.http.Cookie에서 상속되지 않으므로 모든 것이 올바르게 작동하려면 조금 더 많은 노력이 필요하지만 속성 세트 HttpOnly를 제공하며 Servlet 2.5에서 작동합니다.
응답에 쿠키를 설정하려면 response.addCookie(cookie)
를 수행하는 대신 cookie.saveTo(request, response)
를 수행해야합니다.
Tomcat6에서는 HTTP Listener 클래스에서 조건부로 활성화 할 수 있습니다. 라코 디스
이 수업 사용 라코 디스
OWASP 에서 찾았습니다. 라코 디스
"구성의 httponlycookies"보안 문제도 수정되었습니다.