웹에서 사용자 데이터를 저장하는 방법에는 쿠키, 로컬스토리지, 세션스토리지가 있다.
중요한 정보는 JS가 아닌 백엔드에서 쿠키 생성 + 보안 설정(HttpOnly, Secure) 해야 안전하다.
expires 속성을 설정하면 브라우저가 꺼져도 유지된다.
const setCookie = (name, value, exp) => {
let date = new Date();
date.setTime(date.getTime() + exp * 24 * 60 * 60 * 1000);
document.cookie = name + "=" + value + ";expires=" + date.toUTCString() + ";path=/;Secure=true;";
}
setCookie('test01', 'data01', 7);

| 속성 | 설명 |
|---|---|
expires | 쿠키의 만료 시점을 설정함. 이걸 설정하지 않으면 브라우저를 닫을 때 쿠키가 삭제됨 |
Secure | 이 속성이 붙은 쿠키는 HTTPS 연결에서만 전송됨 |
HttpOnly | 이 속성이 있으면 쿠키는 JavaScript에서 접근 불가 |
expires를 설정하지 않으면 브라우저가 꺼질 때 삭제된다.
const setCookie2 = (name, value) => {
var date = new Date();
document.cookie = name + "=" + value + ";path=/";
}
setCookie2('test02', 'data02');
function getCookie(name) {
var value = document.cookie.match("(^|;) ?" + name + "=([^;]*)(;|$)");
return value ? value[2] : null;
}
let test01 = getCookie("test01");
console.log(test01); // "data01"

// 저장
localStorage.test02 = 'data02';
localStorage.setItem("test03", "data03");
// 조회
console.log(localStorage.getItem("test02")); // "data02"
// 삭제
localStorage.removeItem("test02");
// 전체 삭제
localStorage.clear();


// 저장
sessionStorage.test04 = "data04";
sessionStorage.setItem("test05", "data05");
// 조회
console.log(sessionStorage.getItem("test05")); // "data05"
// 삭제
sessionStorage.removeItem("test05");
// 전체 삭제
sessionStorage.clear();


| 항목 | 쿠키 (Cookie) | 로컬스토리지 (LocalStorage) | 세션스토리지 (SessionStorage) |
|---|---|---|---|
| 용도 | 인증 정보, 로그인 상태 유지 | 사용자 설정, 영구 데이터 저장 | 임시 데이터, 탭 단위 정보 저장 |
| 만료 시점 | 직접 설정 (expires, max-age) | 수동 삭제 전까지 유지 | 탭 종료 또는 새로고침 시 삭제 |
| 저장 용량 제한 | 약 4KB | 약 5~10MB | 약 5~10MB |
| HTTP 전송 여부 | 전송됨 (자동 포함됨) | 전송되지 않음 | 전송되지 않음 |
| 접근 방법 | JS & 서버 (HTTP Header) | JS only | JS only |
| 보안 설정 | HttpOnly, Secure 등 가능 | 보안 설정 불가 (암호화 X) | 보안 설정 불가 (암호화 X) |