학습 - 쿠키(Cookie)의 학습

YoonSuk Choi·2025년 1월 2일

7주차

목록 보기
2/10

Cookie란?

  • 쿠키(Cookie)는 웹 서버가 사용자의 웹 브라우저에 저장하는 작은 데이터 조각
  • 쿠키는 사용자 인증, 세션 관리, 사용자 맞춤 설정 등을 위해 사용
  • 브라우저가 서버에 HTTP 요청을 보낼 때 쿠키 데이터를 함께 전송

Cookie의 동작 방식

  1. 사용자가 웹사이트에 방문하면 서버가 쿠키를 생성
  2. 서버는 HTTP 응답을 통해 쿠키를 클라이언트(브라우저)에 전송
  3. 브라우저는 쿠키를 저장하고 이후 해당 웹사이트에 재접속할 때 요청에 쿠키를 포함
  4. 서버는 전송된 쿠키를 읽어 사용자를 식별하거나 이전 설정을 복원

pip 설치 명령어

npm install express cookie-parser

실습결과

  • Node.js와 Express를 사용하여 쿠키 생성, 조회, 삭제의 기능을 구현
  • 암호화되지 않은 쿠키와 암호화된 쿠키의 설정과 관리 방법을 비교하며 학습

사용한 코드

cookie.js

const express = require("express");
const cookieParser = require("cookie-parser");
const app = express();
const PORT = 8080;

// 암호화된 쿠키 사용
app.use(cookieParser("secret Key"));

app.set("view engine", "ejs");

const cookieConfig = {
  maxAge: 10 * 60 * 1000, // 10분
  httpOnly: true, // 브라우저에서 접근 불가
  signed: true, // 암호화 적용
};

const cookieConfig2 = {
  maxAge: 10 * 60 * 1000,
  httpOnly: true,
  path: "/abc",
};

app.get("/abc", (req, res) => {
  res.cookie("abc-page", "abc page cookie", cookieConfig2);
  res.render("cookie-another");
});

app.get("/", (req, res) => {
  res.render("cookie");
});

app.get("/getCookie", (req, res) => {
  console.log("암호화된 쿠키", req.signedCookies);
  res.send(req.signedCookies);
});

app.get("/setCookie", (req, res) => {
  res.cookie("myCookie", "cookie~~~", cookieConfig);
  res.send("set cookie 완료, 응답 종료!");
});

app.get("/clearCookie", (req, res) => {
  res.clearCookie("myCookie", "cookie~~~", cookieConfig);
  res.send("clear cookie, 응답 종료!");
});

app.listen(PORT, () => {
  console.log(`http://localhost:${PORT}`);
});

cookie.ejs

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>cookie</title>
  </head>
  <body>
    <h1>쿠키 확인하기</h1>
    <a href="/setCookie">쿠키 설정</a>
    <a href="/getCookie">쿠키값 가져오기</a>
    <a href="/clearCookie">쿠키 삭제</a>
    <script>
      console.log("document.cookie", document.cookie);
    </script>
  </body>
</html>
<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <h1>다른 페이지에서 쿠키 확인할 수 있는지 보기</h1>
  </body>
</html>

주요 기능 정리

  1. 쿠키 설정
    • 암호화되지 않은 쿠키 및 암호화된 쿠키 설정 가능.
    • 쿠키 수명, 접근 제한, 경로 제한 등 다양한 옵션 제공.
  2. 쿠키 조회
    • 저장된 쿠키 정보를 콘솔에 출력.
    • 암호화된 쿠키는 req.signedCookies를 통해 확인.
  3. 쿠키 삭제
    • 특정 조건에 맞는 쿠키 삭제 기능 구현.

학습 요약

  • 쿠키의 기본 개념과 동작 원리를 이해함.
  • Node.js의 cookie-parser 미들웨어를 활용하여 쿠키 관리 기능을 구현함.
  • 암호화된 쿠키를 통해 보안성을 강화함.
profile
Name : 최윤석(YoonSuk Choi)

0개의 댓글