HttpOnly 플래그
HttpOnly는 쿠키에 JavaScript를 통한 접근을 차단하는 보안 속성입니다. 이 플래그가 설정되면 document.cookie로 쿠키 값을 읽을 수 없습니다. 예를 들어 악성 스크립트가 페이지에 삽입되어도 document.cookie를 실행해서 토큰을 훔쳐갈 수 없습니다. XSS(Cross-Site Scripting) 공격으로부터 쿠키를 보호하는 핵심 방어 수단입니다. 쿠키는 HTTP 요청 시에만 서버로 자동 전송되며, 브라우저의 JavaScript 엔진에서는 완전히 접근이 차단됩니다.
Secure 플래그
Secure는 HTTPS 연결에서만 쿠키를 전송하도록 제한하는 속성입니다. HTTP(암호화되지 않은 연결)에서는 쿠키가 전송되지 않아 중간자 공격(Man-in-the-Middle)으로부터 쿠키를 보호합니다. 공용 와이파이 같은 안전하지 않은 네트워크에서 누군가 패킷을 가로채더라도 쿠키가 암호화된 HTTPS 연결에서만 전송되기 때문에 토큰이 평문으로 노출되지 않습니다. 프로덕션 환경에서는 반드시 설정해야 하는 필수 보안 옵션입니다.
실제 동작 비교
플래그 없을 때: 악성 스크립트 ' + document.cookie)가 실행되면 토큰이 즉시 탈취됩니다.
HttpOnly 설정 시: 같은 스크립트를 실행해도 document.cookie가 빈 문자열을 반환하여 토큰 탈취가 불가능합니다.
Secure 설정 시: HTTP로 접속하면 쿠키가 아예 전송되지 않아 네트워크 스니핑으로도 토큰을 가로챌 수 없습니다.