쿠키는 일정 기간동안 브라우저에서 유지되고 기간이 만료되면 삭제된다. 이러한 만료 조건을 설정하기 위한 옵션이 MaxAge
와 Expires
다.
쿠키가 브라우저에 유지되는 최대 초수를 설정하는 옵션. 현재 시간부터 MaxAge 시간이 경과하면 쿠키가 만료된다. MaxAge를 0으로 설정하면 쿠키는 즉시 삭제되고, 미설정 시에는 브라우저가 종료될 때까지만 쿠키가 유지된다. 날짜 대신 초 단위로 설정이 가능하고 클라이언트의 서버 시간이 달라도 동작하기 때문에 보통은 MaxAge 옵션을 권장한다.
쿠키가 만료되는 날짜를 설정하는 옵션. 이 값을 설정하면 특정 날짜 이후로 쿠키가 삭제된다. 미설정 시에는 브라우저가 종료될 때까지만 쿠키가 유지된다. 날짜 단위로 지정하기 때문에 만료일이 중요한 경우에 유용하게 사용한다. 다만 클라이언트와 서버의 시간이 다른 경우 문제가 발생할 수 있다.
두 옵션 모두 클라이언트 측에서 변경이 가능하기 때문에 보안에 취약하다. 이를 보안하기 위해 민감한 정보가 담긴 쿠키는 HttpOnly 옵션을 설정하여 자바스크립트로부터의 접근을 방지할 수 있다.
HttpOnly
웹 애플리케이션에서 서버로 전송되는 쿠키를 JavaScript로 접근하는 것을 막는 옵션. 이 옵션을 설정하면 쿠키를 생성할 때 HttpOnly 속성을 추가하여, 브라우저의 JavaScript가 쿠키에 접근할 수 없도록 합니다. 이렇게 함으로써, 웹 사이트에서 XSS(Cross-Site Scripting) 공격 등의 보안 문제를 예방할 수 있다.HttpOnly 옵션은 쿠키를 사용하는 다양한 애플리케이션에서 중요한 역할을 하고 있다. 예를 들어 로그인 정보나 세션 ID와 같은 중요한 데이터를 쿠키에 저장하고, 이를 서버와 공유하여 인증을 처리하는 경우가 많다. 이때 HttpOnly 옵션을 사용하지 않으면 악의적인 사용자가 JavaScript를 이용하여 쿠키에 접근하여 정보를 탈취할 수 있기 때문에 보안에 매우 취약해진다.
하지만 HttpOnly 옵션을 설정하면 서버에서만 쿠키를 읽을 수 있기 때문에 서버와 클라이언트 사이의 통신이 원활하지 않을 수도 있다. 예를 들어 클라이언트에서 쿠키 값을 확인해야 하는 경우, 서버를 거쳐야 하기 때문에 일부 지연이 발생할 수 있습니다. 또한 JavaScript를 사용하여 쿠키에 접근할 수 없기 때문에 클라이언트 측에서 쿠키 값을 확인하거나 수정하는 작업이 불가능하다. 허나 단점을 감수하더라도 보안을 위해 HttpOnly 옵션을 사용하는 것이 안전하다.