양쪽 이전 판 이전 판 | |
http_cookie와_톰캣_버전별_이슈 [2020/11/27 11:33] – koov | http_cookie와_톰캣_버전별_이슈 [2020/11/27 11:36] (현재) – koov |
---|
* ''Expires''는 ''Date'' 값을 가지고 있으며 이 날짜가 지나면 쿠키를 버리고, ''HttpOnly''는 비HTTP 요청을 막습니다. (클라이언트가 API로 접근하는 행위 등) | * ''Expires''는 ''Date'' 값을 가지고 있으며 이 날짜가 지나면 쿠키를 버리고, ''HttpOnly''는 비HTTP 요청을 막습니다. (클라이언트가 API로 접근하는 행위 등) |
* 구현 시 고려 사항에 관한 점 또한 변경되었습니다. | * 구현 시 고려 사항에 관한 점 또한 변경되었습니다. |
* ''RFC 2109''는 유저 에이전트가 ''최소 300개''의 쿠키, 쿠키마다 적어도 ''4096바이트'', ''한 호스트나 도메인'' 마다 최소 ''20개''를 지원해야 한다고 명시했습니다. {{:was:tomcat:5.png|}} | * ''RFC 2109''는 유저 에이전트가 ''최소 300개''의 쿠키, 쿠키마다 적어도 ''4096바이트'', ''한 호스트나 도메인'' 마다 최소 ''20개''를 지원해야 한다고 명시했습니다. |
* ''RFC 6265''는 유저 에이전트가 ''최소 3000개''의 쿠키, 쿠키마다 적어도 ''4096바이트'', ''도메인당 최소 50개''의 쿠키를 저장 가능해야 한다고 명시했습니다. {{:was:tomcat:6.png|}} | {{:was:tomcat:5.png}} |
| * ''RFC 6265''는 유저 에이전트가 ''최소 3000개''의 쿠키, 쿠키마다 적어도 ''4096바이트'', ''도메인당 최소 50개''의 쿠키를 저장 가능해야 한다고 명시했습니다. |
| {{:was:tomcat:6.png}} |
* 또한 ''RFC 6265''는 속성이름과 세미콜론 사이에 공백이 필요하고 특수 문자가 있는 경우를 제외하면 속성 값을 ''""''로 감싸지 않습니다. | * 또한 ''RFC 6265''는 속성이름과 세미콜론 사이에 공백이 필요하고 특수 문자가 있는 경우를 제외하면 속성 값을 ''""''로 감싸지 않습니다. |
* ''RFC 6265''는 유저 에이전트가 ''Set-Cookie'' 헤더를 어떻게 처리해야 하는지 알고리즘을 제공합니다. | * ''RFC 6265''는 유저 에이전트가 ''Set-Cookie'' 헤더를 어떻게 처리해야 하는지 알고리즘을 제공합니다. |
| |
* maxAge를 정하면 자동으로 Expires가 정해집니다. | * maxAge를 정하면 자동으로 Expires가 정해집니다. |
* {{:was:tomcat:7.png|}} | {{:was:tomcat:7.png}} |
| |
===== 톰캣 6.0~8.5 버전별 쿠키 이슈. ===== | ===== 톰캣 6.0~8.5 버전별 쿠키 이슈. ===== |
* https://bz.apache.org/bugzilla/show_bug.cgi?id=57896 | * https://bz.apache.org/bugzilla/show_bug.cgi?id=57896 |
* 재현 방법 | * 재현 방법 |
* 스크린샷같이 쿠키를 생성합니다.{{ :was:tomcat:8.png |}} | * 스크린샷같이 쿠키를 생성합니다. |
* 페이지를 재방문하면 헤더 값이 손상됩니다.{{ :was:tomcat:9.png |}} | {{:was:tomcat:8.png}} |
| * 페이지를 재방문하면 헤더 값이 손상됩니다. |
| {{:was:tomcat:9.png}} |
* 해결 방법 | * 해결 방법 |
* 6.0.45로 업데이트합니다. | * 6.0.45로 업데이트합니다. |
makeCookie(response, "CookieName6", "[Bracket]"); | makeCookie(response, "CookieName6", "[Bracket]"); |
</code> | </code> |
</WRAP>↓ 결과{{ :was:tomcat:22.png |}} | </WRAP> |
* Tomcat 7 이상{{ :was:tomcat:23.png |}} | |
| ↓ 결과 |
| |
| {{:was:tomcat:22.png}} |
| |
| * Tomcat 7 이상 |
| {{:was:tomcat:23.png}} |
* 해결 방법 | * 해결 방법 |
* URLEncoder.encode를 사용하여 저장합니다. (값을 읽을 때 Decoding이 필요합니다.){{ :was:tomcat:24.png |}} | * URLEncoder.encode를 사용하여 저장합니다. (값을 읽을 때 Decoding이 필요합니다.) |
| {{:was:tomcat:24.png}} |
| |
===== 출처 ===== | ===== 출처 ===== |