본문 바로가기

IT/Server

[JBoss] 세션 쿠키에서 Httponly 속성 누락 조치 완료

세션 쿠키에서 Httponly 속성이 누락되었을 경우 고객 세션 및 쿠키를 빼내거나 조작하는 것이 가능하여

해커가 사용자 레코드를 보거나 변경할 수 있으며 해당 사용자처럼 트랜잭션을 수행할 수 있다.


Httponly 속성이 적용되었는지 확인 방법은 해당 사이트에 들어가서 개발자 도구에서 document.cookie 실행 시 값이 나오지 않으면 된다.


Httponly 속성 걸기: web.xml 에 <filter> 태그 앞에 해당 소스 삽입

<session-config>

<cookie-config>

<http-only>true</http-only>

<secure>false</secure>

</cookie-config>

<tracking-mode>COOKIE</tracking-mode>

</session-config>


각 속성에 대한 설명은 아래를 참고하기 바란다.


Tracking Mode

세션을 전달하는 방법(세션 트래킹)을 설정한다. 다음은 세션 트래킹을 설정하는 3가지 방법으로 중복 설정이 가능하고 설정하지 않으면 쿠키에 의한 트래킹만을 사용하도록 설정된다.

설정값설명
Cookie

세션 트래킹 방법으로 쿠키를 사용하는 경우의 설정이다.

  • true : 쿠키를 통한 세션 트래킹을 사용한다. (기본값, 사용 권장)

  • false : 쿠키를 통한 세션 트래킹을 사용하지 않는다. 세션 유지가 정상적으로 되지 않을 수 있다.

Url

세션 트래킹 방법으로 URL Rewriting 방법을 사용할 경우의 설정이다.

  • true : 세션 트래킹 방법 중 URL Rewriting 방법을 사용한다.

  • false : 세션 트래킹 방법에서 URL Rewriting 기술을 사용하지 않는다. (기본값)

Ssl

세션 트래킹 방법으로 SSL을 사용할 경우의 설정이다.

  • true : 세션 트래킹을 할 때 SSL을 통해서만 세션을 전달한다. 정상적으로 동작하지 않을 수 있다.

  • false : 세션 트래킹을 할 때 SSL이 아닌 연결을 통해서도 세션을 전달한다.

    (기본값)



Session Cookie

사용자의 세션을 추적하는 기본 기술은 모든 클라이언트 응답에 반환되는 세션 쿠키를 이용하여 구현된다. 이는 웹 엔진에서 응답를 내보낼 때 HTTP 헤더의 세션 쿠키에 대한 설정이다. 일반적으로 엔진에서 쿠키를 구성하지만, 특별한 쿠키 정보를 구성하는 경우에 사용한다. 다음과 같은 세부 항목을 설정할 수 있다.


항목

설명

Cookie Name

세션 쿠키의 이름으로 표준 이름인 "JSESSIONID"를 사용하지 않고 다른 이름을 사용할 경우에 설정한다. String 형식의 설정이며, 설정하지 않을 경우 기본값으로 설정된다. (기본값: JSESSIONID)

Version

쿠키 ID의 버전을 설정한다.

Int 형식의 설정으로 다음의 값 중에 하나를 설정한다.

    • 0 : NS 쿠키 유형을 가진다. (기본값)

    • 1 : RFC 스펙의 쿠키 유형을 가진다.

Domain

세션 쿠키가 전달될 때 서버의 도메인 이름을 설정한다. 쿠키는 이 도메인 요청에 대해서만 되돌아온다. 하나의 적합한 도메인 이름은 "."으로 시작되어야 하며, <host_name>을 지정해서는 안 된다. 이에 대한 자세한 내용은 "RFC-2109 스펙"을 확인한다.

String 형식의 설정이며, 설정을 하지 않았을 경우 쿠키에 도메인 정보를 포함하지 않는다.

Path

세션 쿠키가 보내질 도메인 내의 String 형식의 URL 경로를 설정한다. 쿠키는 도메인이 적합할 때 해당 URL의 어떤 요청과 함께 보내진다.

예를 들어 만일 "/examples"라는 경로가 설정되고, 도메인은 ".foo.com"으로 설정되었다고 가정할 때 클라이언트의 요청들은 "www.foo.com/examples"의 형식에 맞을 경우에만 해당 쿠키를 포함하여 서버로 요청한다. 이 또한 위의 도메인 설정과 더불어 "RFC-2109 스펙"을 확인한다.

    • 설정하지 않은 경우 : 엔진 내부에서 적절한 경로를 선택한다.

    • 설정한 경우 : 설정된 고정 경로 정보가 항상 쿠키 정보로 포함한다.

경로의 최상위 값인 "/"가 아닌 다른 값으로 설정할 경우에는 애플리케이션들의 세션 공유 특성들을 고려하여 주의 깊게 값을 설정한다.

Max Age

세션 쿠키의 expires 속성을 설정한다. 이 시간 주기가 되면 쿠키는 클라이언트로부터 제거되고 더 이상 보내지지 않는다. Int 형식의 설정이며, 설정하지 않을 경우 기본값으로 설정된다. (기본값: -1, 단위: 초)

기본값으로 설정하면 쿠키의 "expires" 속성을 사용하지 않겠다는 것을 의미한다. 즉, 브라우저의 LifeCycle을 따르겠다는 의미로, 브라우저가 닫힐 때 쿠키는 사용자의 세션이 끝남과 동시에 끝난다.

Secure

세션 쿠키의 secure 속성을 Boolean 형식으로 설정하고 설정하지 않을 경우 기본값으로 설정된다.

    • true : 세션 쿠키는 오직 Secure http connection인 HTTPS 위에서만 보내진다.

    • false : 다른 연결에도 세션 쿠키가 전달된다. (기본값: false)

Http Only

세션 ID 쿠키의 HttpOnly 속성을 Boolean 형식으로 설정한다. 설정하지 않을 경우 기본값으로 설정된다.

HttpOnly 속성은 Servlet 3.0에 추가된 기술로 HTTP 외의 스크립트 요청에 의해서 해당 쿠키가 사용되는 것을 방지하는 보안 기술이다.

    • true : HTTP Request를 통해 서만 세션 쿠키가 사용된다. (기본값)

    • false : 스크립트 코드 등에서도 세션 쿠키가 사용된다.

Comment

사용자가 해당 쿠키에 대한 정보를 쉽게 알 수 있도록 하기 위해 해당 쿠키에 대한 목적 또는 설명을 기록한다.

Netscape Version 0 쿠키에서는 지원되지 않는다.



참고사이트: https://technet.tmaxsoft.com/upload/download/online/jeus/pver-20140827-000001/session/chapter_session_tracking.html