Express 쿠키와 인증

김민석·2026년 3월 7일

쿠키

  • 인증
  • 개인화
  • 트래킹

쿠키 생성

Set-Cookie를 사용하여 쿠키를 생성

var http = require('http');
http.createServer(function (req,res) {
   // 성공시(200)
	res.writeHead(200,{
    	"Set-Cookie" : ['yummy-cookie=choco','tasty_cookie=berry']
    });
  
}).listen(3000);

현재 이러한 코드를 짜고 3000으로 들어가서 네트워크 탭에 Headers에 response Headers에 들어가면 Set-Cookie가 두개가 있을 것이다. 그리고 Request-cookie에는 아직 없음 res.writeHead 코드를 주석처리하고 리로드 하면 request Headers에 쿠키가 남아있음 또한 response headers는 쿠키 없음.즉 이것은 이 웹브라우저는 Set-Cookie값을 통해 서버로 전송하고 있는 것.
이 쿠키는 없앨려면 application tab에 cookie에서 삭제하면됨. 또한 설정 시간 Max-Age에 따라 쿠키가 남아있음.
Set-Cookie가 지금 두개라서 배열로 하나일때는 그냥 ''으로 하면된다.

쿠키 읽기

npm i cookie 설치하기

var cookie = require('cookie');

http.createServer(function (req,res) {
   // 성공시(200)
   var cookies ={}
   if(req.headers.cookie !== undefined) {
   	 cookies = cookie.parse(req.headers.cookie);
   }
	res.writeHead(200,{
    	"Set-Cookie" : ['yummy-cookie=choco','tasty_cookie=berry']
    });
  
}).listen(3000);

cookie 라이브러리 사용하여 cookie.parese를 이용해 requset headers에서 받아온 cookie를 넣어주면 객체값으로 cookie가 불러와짐 즉 위에서 입력한 cookie.yummi_cookie 를 입력하면 choco가 나옴 그리고 cookie가 없을 수 있으니 cookies를 빈객체ㅐ로 만든 훟 request Header에 쿠키가 있으면 넣어주도록 설계

Session Cookies

웹브라우저 끄면 없어져있음

Permanent cookies

웹브라우저 껏다켜도 유지(Max-Age 있으면)
Max-Age : 쿠키가 살아있는 시간

res.writeHead(200,{
    	"Set-Cookie" : ['yummy-cookie=choco','tasty_cookie=berry'
,`Permanenet=cookies; Max-Age=${3600}`]
  
    }	);

Secure & HttpOnly

Secure

  • HTTPS 연결에서만 쿠키가 전송되도록 하는 옵션
  • HTTP 요청에서는 쿠키가 전송되지 않음

Set-Cookie: sessionId=abc123; Secure
목적: 네트워크 중간에서 쿠키 탈취(세션 하이재킹) 방지

HttpOnly

  • JavaScript에서 쿠키 접근을 막는 옵션
  • document.cookie로 읽을 수 없음
    Set-Cookie: sessionId=abc123; HttpOnly
    목적:XSS 공격으로 세션 쿠키 탈취 방지

Path & domain

Path : 해당 디렉토리 안에서만 지정하고 싶을떄 사용함 그 아래의 주소도 가능
기본값은 / (root)
Set-Cookie: sessionId=abc123; Path=/cookie
domain : 쿠키를 사용할 도메인 범위를 지정
Set-Cookie: sessionId=abc123; domain =example.com

요청 도메인쿠키 전송
example.com
www.example.com
api.example.com
profile
나만의 기록장

0개의 댓글