Skip to main content

Command Palette

Search for a command to run...

HttpOnly 쿠키

Updated
•1 min read•View as Markdown
HttpOnly 쿠키

HttpOnly 쿠키는 웹 서버가 HTTP 응답 헤더를 통해 설정하는 쿠키이다. 해당 쿠키는 클라이언트 측에서 자바스크립트로 접근할 수 없고, 오직 HTTP 요청을 통해서만 서버로 전송된다.

서버에서 accessToken이라는 쿠키를 httpOnly로 설정할 경우, 아래와 같이 해당 쿠키는 자바스크립트로 쿠키를 확인할 수 없다.

클라이언트에서 자바스크립트로 접근할 수 없기 때문에 Cross-site 스크립팅(XSS) 공격을 방지할 수 있다. 하지만 CSRF 공격에는 취약하다. CSRF 공격을 방지하기 위해서는 CSRF 토큰을 사용하는 것이 일반적이다. (form에 hidden 필드로 csrf 토큰 설정)

*CSRF: 사용자가 자신의 의지와는 무관하게 공격자가 준비한 요청을 서버에 보내게 하는 공격
Your App Is NOT Secure If You Don't Use CSRF Tokens

스코프

Domain과 Path 디렉티브는 쿠키의 스코프를 정의한다.

Domain은 쿠키가 전송되게 할 호스트를 명시한다. 디폴트값은 현재 문서 위치의 호스트 일부를 기본값으로 한다.

예를 들어, 도메인이 mozilla.org으로 설정된 경우 해당 쿠키는 mozilla.org 뿐만 아니라 subdomain.mozilla.org, another.subdomain.mozilla.org와 같은 서브도메인에서도 유효하게 된다. 그러나 도메인이 명시되지 않은 경우에는 현재 호스트가 기본값으로 적용되며, 이 경우에는 서브도메인이 포함되지 않는다. 따라서 해당 쿠키는 mozilla.org에서만 유효하고 서브도메인에서는 사용되지 않는다.

반대로 Path의 경우, 값을 명시하지 않으면(혹은 "/"로 설정하면) 해당 도메인의 모든 페이지에서 사용 가능하다. 특정 경로로 제한하려면 해당 경로를 명시적으로 설정해야 한다.

예를 들어, Path=docs로 설정하면 쿠키는 /docs, /docs/Web/, /docs/Web/HTTP 같은 모든 하위 경로에서만 사용할 수 있다.

More from this blog

Server-sent events(SSE): 오지 않는 이벤트, 빈 문자열 처리

문제: event 필드만 전송할 경우 처리되지 않음 결론: EventSource는 데이터 필드가 비었을 경우 메시지를 처리하지 않음 일단 SSE 정의부터 간단하게 알아보자. SSE는 서버 푸시 기술로, 클라이언트가 아닌 서버가 통신을 시작하는 통신 방법이다. 주로 연속적인 데이터 스트림을 브라우저 클라이언트로 보내는 데 사용된다. 클라이언트에서 EventSource 객체를 이용하여 연결을 설정하면, 서버에서 text/event-stream ...

Aug 6, 20242 min read
Server-sent events(SSE): 오지 않는 이벤트, 빈 문자열 처리

자바스크립트의 실행 컨텍스트와 클로저

자바스크립트 엔진은 실행 컨텍스트를 통해 식별자와 스코프를 관리한다. 실행 컨텍스트는 소스코드를 평가/실행하고 코드 실행 결과를 관리하는 영역이다. 실행 컨텍스트는 식별자와 스코프를 관리(렉시컬 환경)하고, 코드 실행 순서를 관리(실행 컨텍스트 스택)하는 내부 메커니즘이다. 자바스크립트 엔진은 소스코드를 평가와 실행 두 단계로 나누어 처리한다. 소스코드 평가 단계: 선언문을 처리하고 평가 결과를 스코프에 등록 소스코드 실행 단계: 선...

Jan 14, 20242 min read

MongoDB에서 MySQL로 데이터 이전 with csv

Express.js와 MongoDB를 이용하여 작성했던 게시판 프로젝트가 있다. 헤로쿠가 무료 플랜을 중단하면서 서버가 내려갔었는데, 친구들의 요청이 있기도 했고 NestJS와 MySQL + kysely를 손에 익힐 겸 다시 재작성하고 있다. 프로젝트를 살리는 김에 이전 글들을 볼 수 있으면 좋을 것 같다는 생각이 들었다. 그러니 알아보자. MongoDB의 데이터를 MySQL로 이전하는 방법 MongoDB에서 데이터 추출 mongoexport ...

Jan 13, 20242 min read
MongoDB에서 MySQL로 데이터 이전 with csv

관계형 데이터베이스의 함수적 종속성과 정규화

이 글은 Pearson의 Fundamentals of Database Systems 7판을 읽고 작성했습니다. 릴레이션 스키마를 설계하는 몇 가지 개략적인 지침 지침 1. 의미가 쉽게 전달되도록 릴레이션 스키마를 설계한다. 여러 개의 엔티티 타입과 관계 타입의 애트리뷰트들을 섞어서 하나의 릴레이션으로 구성하면 안 된다. 지침 2. 릴레이션에서 삽입, 삭제, 또는 수정 이상이 생기지 않도록 기본 릴레이션 스키마를 설계한다. 예를 들어, 특정 부...

Jan 11, 20243 min read

Nakkim's blog

5 posts