๐ช ์ฟ ํค๋ ๋ฌด์์ธ๊ฐ?
์ฟ ํค๋ ์น ๊ฐ๋ฐ์๋ผ๋ฉด ๋ฐ๋์ ์ดํดํด์ผ ํ ํต์ฌ ๊ฐ๋ ์ค ํ๋์ ๋๋ค.
“์น์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค? ๊ทธ๋ผ ์ฟ ํค๋ฅผ ์จ์ผ ํ๋?“๋ผ๋ ์ง๋ฌธ์ ๋์ง๋ฉฐ ์์ํ ์ ์์ฃ .
์ด๋ฒ ๊ธ์์๋ ์ฟ ํค์ ๋์ ๋ฐฐ๊ฒฝ, ์ ์ฅ ๋ฐฉ์, ํน์ง๊ณผ ํจ๊ป, ์ฟ ํค๋ฅผ ํ์ฉํ ๋ ์์์ผ ํ ๋ชจ๋ ๋ด์ฉ์ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค!
1๏ธโฃ ์ฟ ํค์ ๋์ ๋ฐฐ๊ฒฝ
์น์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌด์ํ(stateless) ํ๋กํ ์ฝ์ธ HTTP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํฉ๋๋ค.
์ฆ, ํ ๋ฒ์ ์์ฒญ-์๋ต ์ดํ์๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๊ธฐ์ตํ์ง ๋ชปํ์ฃ . ๐ฅ
์ด ๋ฌด์ํ์ฑ์ ๊ทน๋ณตํ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ ์ธก์์ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ ํ์๊ฐ ์๊ฒผ๊ณ , ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฟ ํค๊ฐ ๋์ ๋์์ต๋๋ค.
๋ฌด์์ ํด๊ฒฐํ์๊น?
• ์ธ์ ๊ด๋ฆฌ: ๋ก๊ทธ์ธ ์ํ, ์ฅ๋ฐ๊ตฌ๋ ์ ๋ณด ๋ฑ ์ธ์ ์ ์ง๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ.
• ์ฌ์ฉ์ ์ถ์ : ์ฌ์ฉ์ ํ๋ ๋ถ์ ๋ฐ ๊ฐ์ธํ๋ ์ฝํ ์ธ ์ ๊ณต.
• ๊ธฐํ ์ ๋ณด ์ ์ฅ: ํผ ๋ฐ์ดํฐ, ์ ํธ ์ค์ ๋ฑ.
2๏ธโฃ ์ฟ ํค๋?
์ฟ ํค๋ ํด๋ผ์ด์ธํธ(์ฃผ๋ก ์น ๋ธ๋ผ์ฐ์ )์ ์ ์ฅ๋๋ ์์ ๋ฐ์ดํฐ ์กฐ๊ฐ์ ๋๋ค.
์๋ฒ๊ฐ HTTP ์๋ต ์ ํด๋ผ์ด์ธํธ์ Set-Cookie ํค๋๋ฅผ ํตํด ์ ๋ฌํ๋ฉฐ, ์ดํ ํด๋ผ์ด์ธํธ๋ ํด๋น ์ฟ ํค๋ฅผ ์๋ฒ์ ์๋์ผ๋ก ํฌํจํ์ฌ ์์ฒญ์ ๋ณด๋ ๋๋ค.
3๏ธโฃ ์ฟ ํค์ ์ ์ฅ ๋ฐฉ์
์ฟ ํค ์์ฑ ๊ณผ์
1. ์๋ฒ๊ฐ ์ฟ ํค ์ค์
์๋ฒ๋ HTTP ์๋ต ํค๋์ Set-Cookie๋ฅผ ํฌํจํด ์ฟ ํค๋ฅผ ์ค์ ํฉ๋๋ค.
HTTP/1.1 200 OK
Set-Cookie: sessionId=abc123; Expires=Tue, 24-Jan-2025 12:00:00 GMT; Path=/; HttpOnly
2. ํด๋ผ์ด์ธํธ์ ์ ์ฅ
ํด๋ผ์ด์ธํธ๋ ์ฟ ํค๋ฅผ ๋ก์ปฌ์ ์ ์ฅํฉ๋๋ค.
3. ์ฟ ํค ์๋ ํฌํจ
์ดํ ํด๋ผ์ด์ธํธ๋ ์ ์ฅ๋ ์ฟ ํค๋ฅผ HTTP ์์ฒญ ํค๋์ ์๋์ผ๋ก ํฌํจํฉ๋๋ค.
GET /dashboard HTTP/1.1
Host: example.com
Cookie: sessionId=abc123
์ฟ ํค ์ ์ฅ ์์น
์ฟ ํค๋ ์น ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ฉฐ, ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ง๋ค ์ฟ ํค๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ด ๋ค๋ฅผ ์ ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ ์ ๊ฐ๋ฐ์ ๋๊ตฌ(F12)๋ฅผ ํตํด ์ฟ ํค๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
Application > Storage > Cookies ํญ์์ ์ ์ฅ๋ ์ฟ ํค๋ฅผ ์ฝ๊ฒ ๋ณผ ์ ์์ฃ .
4๏ธโฃ ์ฟ ํค์ ์ฃผ์ ํน์ง
1. ์ ํ๋ ์ฉ๋
• ํ๋์ ์ฟ ํค ํฌ๊ธฐ: ์ต๋ 4KB.
• ๋๋ฉ์ธ๋น ์ฟ ํค ์: ๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ผ ์ฝ 50~100๊ฐ.
• ์ฟ ํค ํฌ๊ธฐ์ ๊ฐ์๋ ๋ธ๋ผ์ฐ์ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก ์ต์ํํด์ผ ํฉ๋๋ค.
2. ๋ณด์ ์ค์
์ฟ ํค๋ ๋ณด์ ๊ด๋ จ ์ค์ ์ด ๊ฐ๋ฅํ๋ฉฐ, ์ฃผ์ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
Secure
• HTTPS ์ฐ๊ฒฐ์์๋ง ์ ์ก๋ฉ๋๋ค.
• ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ ํญ์ Secure ์ต์ ๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค.
HttpOnly
• JavaScript์์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋๋ก ์ค์ ํฉ๋๋ค.
• XSS(ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ ) ๊ณต๊ฒฉ ๋ฐฉ์ง์ ํจ๊ณผ์ ์ ๋๋ค.
SameSite
• Cross-site ์์ฒญ์์ ์ฟ ํค์ ์ ์ก์ ์ ์ดํฉ๋๋ค.
• Strict: ๋์ผ ์ฌ์ดํธ ์์ฒญ์์๋ง ์ฟ ํค ์ ์ก.
• Lax: ์ผ๋ถ cross-site ์์ฒญ ํ์ฉ(GET ์์ฒญ์๋ง ์ฟ ํค ์ ์ก).
• None: ์ ํ ์์ด ๋ชจ๋ cross-site ์์ฒญ ํ์ฉ(๋จ, Secure ์ต์ ์ด ํ์).
3. ์ ํจ๊ธฐ๊ฐ ๊ด๋ฆฌ
Expires
• ์ฟ ํค์ ๋ง๋ฃ ์์ ์ ๋ช ์ํฉ๋๋ค.
• ์์: Expires=Tue, 24-Jan-2025 12:00:00 GMT.
Max-Age
• ๋ง๋ฃ ์๊ฐ์ ์ด ๋จ์๋ก ์ง์ ํฉ๋๋ค.
• ์์: Max-Age=3600 (1์๊ฐ ํ ๋ง๋ฃ).
์ธ์ ์ฟ ํค
• ์ ํจ๊ธฐ๊ฐ์ ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ, ๋ธ๋ผ์ฐ์ ๊ฐ ๋ซํ๋ฉด ์๋ ์ญ์ ๋ฉ๋๋ค.
4. ์ค์ฝํ ์ค์
Path
• ์ฟ ํค๊ฐ ์ ์ก๋ URL ๊ฒฝ๋ก๋ฅผ ์ ํํฉ๋๋ค.
• ์์: Path=/dashboard (ํด๋น ๊ฒฝ๋ก ๋ฐ ํ์ ๊ฒฝ๋ก์์๋ง ์ฟ ํค ์ ์ก).
Domain
• ์ฟ ํค๊ฐ ์ ์ก๋ ๋๋ฉ์ธ์ ์ค์ ํฉ๋๋ค.
• ์์: Domain=example.com (ํ์ ๋๋ฉ์ธ ํฌํจ).
5๏ธโฃ ์ฟ ํค์ ์ฅ์ ๊ณผ ๋จ์
โ ์ฅ์
1. ํด๋ผ์ด์ธํธ ์ํ ์ ์ง
๋ก๊ทธ์ธ, ์ฅ๋ฐ๊ตฌ๋ ๋ฑ์ ์ธ์ ๊ด๋ฆฌ์ ์ ์ฉ.
2. ์๋ฒ ๋ถํ ๊ฐ์
ํด๋ผ์ด์ธํธ๊ฐ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ฏ๋ก ์๋ฒ์ ๋ถํ๋ฅผ ์ค์.
3. ์ฌ์ฉ์ ๊ฒฝํ ๊ฐ์
๊ฐ์ธํ๋ ์ฝํ ์ธ ์ ๊ณต ๋ฐ ์ ํธ๋ ์ ์ฅ.
โ ๋จ์
1. ๋ณด์ ๋ฌธ์
๋ฏผ๊ฐํ ์ ๋ณด ์ ์ฅ ์ ๋๋ ๊ฐ๋ฅ์ฑ(XSS, CSRF ๊ณต๊ฒฉ ๋ฑ).
2. ์ ํ๋ ์ฉ๋
4KB์ ํฌ๊ธฐ ์ ํ์ผ๋ก ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ด๋ ค์.
3. ์๋ ์ ํ
ํด๋ผ์ด์ธํธ-์๋ฒ ๊ฐ ์ฟ ํค ์ ์ก์ผ๋ก ๋คํธ์ํฌ ํธ๋ํฝ ์ฆ๊ฐ ๊ฐ๋ฅ.
6๏ธโฃ ์ฟ ํค ํ์ฉ ์ฌ๋ก
1. ๋ก๊ทธ์ธ ์ํ ์ ์ง
• ์๋ฒ๋ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฟ ํค๋ก ์ ์ฅํฉ๋๋ค.
• ์ดํ ์์ฒญ์์ ํด๋น ์ฟ ํค๋ฅผ ํ์ธํ์ฌ ์ธ์ฆ๋ ์ฌ์ฉ์์ธ์ง ํ๋จํฉ๋๋ค.
2. ์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ
• ์ผํ๋ชฐ์์ ์ฌ์ฉ์๊ฐ ๋ด์ ์ฅ๋ฐ๊ตฌ๋ ์ํ๋ฅผ ์ฟ ํค์ ์ ์ฅํด ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํต๋๋ค.
3. ์ฌ์ฉ์ ์ถ์
• ๊ด๊ณ ๋ ๋ถ์ ๋๊ตฌ์์ ์ฟ ํค๋ฅผ ์ฌ์ฉํด ์ฌ์ฉ์์ ํ๋์ ๊ธฐ๋กํ๊ณ ๋ถ์ํฉ๋๋ค.
7๏ธโฃ ์ฟ ํค๋ฅผ ๋์ฒดํ๋ ๊ธฐ์
์ฟ ํค ์ธ์๋ ํด๋ผ์ด์ธํธ-์ฌ์ด๋์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ๋์ ๊ธฐ์ ์ด ๋ฑ์ฅํ์ต๋๋ค:
1. LocalStorage
• ์๊ตฌ์ ์ผ๋ก ๋ฐ์ดํฐ ์ ์ฅ.
• ์ฟ ํค๋ณด๋ค ์ฉ๋์ด ํฌ์ง๋ง, HTTP ์์ฒญ์๋ ํฌํจ๋์ง ์์.
2. SessionStorage
• ๋ธ๋ผ์ฐ์ ํญ ๋จ์๋ก ๋ฐ์ดํฐ ์ ์ฅ.
3. JWT(JSON Web Token)
• ์ธ์ฆ ์ ๋ณด๋ฅผ ํฌํจํ๋ ํ ํฐ์ผ๋ก, ์ฟ ํค๋ ํค๋์ ์ ์ฅ.
8๏ธโฃ ์ฟ ํค ์ค์ ์์
HTTP ์๋ต์์ ์ค์
Set-Cookie: sessionId=abc123; Expires=Tue, 24-Jan-2025 12:00:00 GMT; Path=/; Secure; HttpOnly
JavaScript๋ก ์ค์
document.cookie = "username=JohnDoe; Max-Age=3600; Secure; HttpOnly";
console.log(document.cookie); // "username=JohnDoe"
๐ท์ ์ค์ ๊ฐ๋ฐ์๊ฐ ๋์ด๋ด ์๋น! ๐ท
๐ช ์ฟ ํค(Cookie)๋ ๋ฌด์์ธ๊ฐ?
์น์ ์ฌ์ฉํ ๋ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ ์ ์ง์ ์ฌ์ฉ์ ๊ฒฝํ ํฅ์์ ์ํด ํ์์ ์ธ ์ญํ ์ ํ๋ ์ฟ ํค. ์ค๋์ ์ฟ ํค๋ ๋ฌด์์ธ์ง, ๋์ ๋ฐฐ๊ฒฝ, ์ ์ฅ ๋ฐฉ์, ๊ทธ๋ฆฌ๊ณ ํน์ง๊น์ง ํ ๋ฒ์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค!
์ฟ ํค๋? ๐ช
์ฟ ํค(Cookie)๋ ์น ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ ์์ ๋ฐ์ดํฐ ํ์ผ๋ก, ์ฌ์ฉ์์ ์ธ์ ์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ ์ธก์์ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
• ์ ์: ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์ ์ ์ฅํ๋ ์์ ๋ฐ์ดํฐ ์กฐ๊ฐ.
• ์ฉ๋:
• ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ํ ์ ์ง
• ์ฅ๋ฐ๊ตฌ๋ ๋ฐ์ดํฐ ์ ์ฅ
• ์ฌ์ฉ์ ํ๊ฒฝ ์ค์ ์ ์ฅ
• ์ฌ์ดํธ ๋ฐฉ๋ฌธ ๊ธฐ๋ก ์ ์ฅ
์ฟ ํค ์์
username=JohnDoe; expires=Fri, 01 Jan 2025 12:00:00 UTC; path=/
์ด ์ฟ ํค๋ username์ด๋ผ๋ ํค์ JohnDoe๋ผ๋ ๊ฐ์ ์ ์ฅํ๋ฉฐ, 2025๋ 1์ 1์ผ 12์๊น์ง ์ ํจํฉ๋๋ค.
๋์ ๋ฐฐ๊ฒฝ: ์ ์ฟ ํค๊ฐ ํ์ํ ๊น? ๐ค
HTTP๋ **๋ฌด์ํ ํ๋กํ ์ฝ(Stateless Protocol)**์ ๋๋ค.
์ฆ, ์๋ฒ๋ ์ด์ ์์ฒญ๊ณผ ํ์ฌ ์์ฒญ ๊ฐ์ ์ฐ๊ฒฐ ์ํ๋ฅผ ๊ธฐ์ตํ์ง ๋ชปํฉ๋๋ค. ์ด๋ก ์ธํด ์ฌ์ฉ์๊ฐ ์ด๋ค ์ํ์ธ์ง ์ ์งํ๊ธฐ๊ฐ ์ด๋ ค์ ์ต๋๋ค.
๋ฌธ์ ์
1. ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์งํ ์ ์์.
• ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์ด๋ํ ๋๋ง๋ค ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ๋ค์ ์ ๋ ฅํด์ผ ํ์.
2. ์ผํ๋ชฐ์ ์ฅ๋ฐ๊ตฌ๋ ๋ฐ์ดํฐ ์ ์ง๊ฐ ์ด๋ ค์.
• ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ๊ฑฐ๋ ์ด๋ํ๋ฉด ์ฅ๋ฐ๊ตฌ๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง.
ํด๊ฒฐ์ฑ : ์ฟ ํค ๋์
์ฟ ํค๋ ํด๋ผ์ด์ธํธ ์ธก์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํจ์ผ๋ก์จ ์ฌ์ฉ์ ์ํ์ ์ ๋ณด๋ฅผ ์ง์์ ์ผ๋ก ์ ์งํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
์ฟ ํค์ ์ ์ฅ ๋ฐฉ์
์ฟ ํค๋ ํด๋ผ์ด์ธํธ(์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ )์ ์ ์ฅ๋๋ฉฐ, ์๋ฒ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒญ๊ณผ ์๋ต์ ์ฃผ๊ณ ๋ฐ๋ ๋์ ์ฌ์ฉ๋ฉ๋๋ค.
1๏ธโฃ ์ฟ ํค ์์ฑ: ์๋ฒ์์ ๋ธ๋ผ์ฐ์ ๋ก ์ ๋ฌ
HTTP ์๋ต ํค๋๋ฅผ ํตํด ์๋ฒ๊ฐ ์ฟ ํค๋ฅผ ์์ฑํ๊ณ ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌํฉ๋๋ค.
Set-Cookie: username=JohnDoe; expires=Fri, 01 Jan 2025 12:00:00 UTC; path=/;
2๏ธโฃ ์ฟ ํค ์ ์ฅ: ๋ธ๋ผ์ฐ์ ์์ ๊ด๋ฆฌ
• ๋ธ๋ผ์ฐ์ ๋ ๋ฐ์ ์ฟ ํค๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅํฉ๋๋ค.
• ์ ์ฅ ์์น๋ ๋ณดํต ํ ์คํธ ํ์ผ๋ก ๊ด๋ฆฌ๋๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค.
3๏ธโฃ ์ฟ ํค ์ ์ก: ๋ธ๋ผ์ฐ์ ์์ ์๋ฒ๋ก
• ๋ธ๋ผ์ฐ์ ๋ ์ ์ฅ๋ ์ฟ ํค๋ฅผ HTTP ์์ฒญ์ ํฌํจํ์ฌ ์๋ฒ๋ก ์ ์กํฉ๋๋ค.
GET /dashboard HTTP/1.1
Host: example.com
Cookie: username=JohnDoe
์ฟ ํค์ ๊ตฌ์ฑ ์์
์ฟ ํค๋ ์ฌ๋ฌ ์์ฑ์ ํฌํจํ๋ฉฐ, ๊ฐ๊ฐ์ ์์ฑ์ ์ฟ ํค์ ๋์ ๋ฐฉ์์ ์ ์ํฉ๋๋ค.
1. ํค-๊ฐ ์
์ฟ ํค๋ ํญ์ key=value ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
username=JohnDoe
2. ๋ง๋ฃ ๋ ์ง (Expires)
์ฟ ํค์ ์ ํจ ๊ธฐ๊ฐ์ ์ค์ ํฉ๋๋ค. ๊ธฐ๊ฐ์ด ์ง๋๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ผ๋ก ์ญ์ ํฉ๋๋ค.
expires=Fri, 01 Jan 2025 12:00:00 UTC
3. ๊ฒฝ๋ก (Path)
์ฟ ํค๊ฐ ์ ํจํ URL ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค.
path=/dashboard
4. ๋๋ฉ์ธ (Domain)
์ฟ ํค๊ฐ ์ ํจํ ๋๋ฉ์ธ์ ์ ์ํฉ๋๋ค.
domain=example.com
5. ๋ณด์ ์ค์
• Secure: HTTPS ์ฐ๊ฒฐ์์๋ง ์ฟ ํค๊ฐ ์ ์ก๋ฉ๋๋ค.
• HttpOnly: JavaScript์์ ์ฟ ํค๋ฅผ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ์ค์ ํฉ๋๋ค.
• SameSite: ํฌ๋ก์ค ์ฌ์ดํธ ์์ฒญ์์ ์ฟ ํค ์ ์ก์ ์ ์ดํฉ๋๋ค.
์ฟ ํค์ ํน์ง
1๏ธโฃ ํฌ๊ธฐ ์ ํ
• ํ๋์ ์ฟ ํค๋ 4KB๋ฅผ ๋์ ์ ์์ต๋๋ค.
• ๋ธ๋ผ์ฐ์ ๋ง๋ค ์ ์ฅ ๊ฐ๋ฅํ ์ฟ ํค์ ๊ฐ์ ์ ํ์ด ์์(๋ณดํต 20~50๊ฐ).
2๏ธโฃ ํด๋ผ์ด์ธํธ-์๋ฒ ๊ฐ ์๋ ์ ์ก
• ๋ธ๋ผ์ฐ์ ๋ ์์ฒญ๋ง๋ค ์ฟ ํค๋ฅผ ์๋์ผ๋ก ์๋ฒ์ ์ ์กํฉ๋๋ค.
• ๋คํธ์ํฌ ํธ๋ํฝ์ ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ ๊ผญ ํ์ํ ๋ฐ์ดํฐ๋ง ์ ์ฅํด์ผ ํฉ๋๋ค.
3๏ธโฃ ๋ณด์ ์ด์
• ์ทจ์ฝ์ : ์ฟ ํค๋ ํด๋ผ์ด์ธํธ ์ธก์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ํ์ทจ ์ํ์ด ์์ต๋๋ค.
์: XSS ๊ณต๊ฒฉ์ผ๋ก ์ฟ ํค๋ฅผ ํ์ทจ.
• ๋์: HttpOnly์ Secure ์์ฑ์ ์ฌ์ฉํ์ฌ ๋ณดํธ ๊ฐ๋ฅ.
์ฟ ํค ํ์ฉ ์์
1. ์ฌ์ฉ์ ๋ก๊ทธ์ธ ์ ์ง
Set-Cookie: sessionToken=abc123; HttpOnly; Secure; Path=/;
• HttpOnly: JavaScript๋ก ์ ๊ทผ ๋ถ๊ฐ.
• Secure: HTTPS์์๋ง ์ ์ก.
2. ์ฅ๋ฐ๊ตฌ๋ ๋ฐ์ดํฐ ์ ์ฅ
Set-Cookie: cartItems=product123,product456; Path=/; Expires=Wed, 10 Jan 2025 12:00:00 UTC;
3. ์ฌ์ฉ์ ์ค์ ์ ์ฅ
Set-Cookie: theme=dark; Path=/; Expires=Wed, 10 Jan 2025 12:00:00 UTC;
์ฟ ํค์ ์ฅ์ ๊ณผ ๋จ์
์ฅ์
1. ๊ฐ๋จํ ๋ฐ์ดํฐ ์ ์ฅ
• ๋ก์ปฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ฌ ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ผ ์ ์์.
2. ์๋ ๊ด๋ฆฌ
• ๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ผ๋ก ์ฟ ํค๋ฅผ ์๋ฒ์ ๋๊ธฐํ.
๋จ์
1. ๋ณด์ ๋ฌธ์
• ํ์ทจ์ ๋ณ์กฐ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฏ๋ก ์ ์คํ ์ค์ ์ด ํ์.
2. ํฌ๊ธฐ ์ ํ
• 4KB์ ํฌ๊ธฐ ์ ํ์ผ๋ก ์ธํด ๋๋์ ๋ฐ์ดํฐ ์ ์ฅ์๋ ๋ถ์ ํฉ.
3. ํธ๋ํฝ ์ฆ๊ฐ
• ์์ฒญ๋ง๋ค ์ฟ ํค๊ฐ ์๋ฒ์ ์ ์ก๋๋ฏ๋ก ๋คํธ์ํฌ ๋น์ฉ ์ฆ๊ฐ.
์ฟ ํค์ ๋์: LocalStorage์ SessionStorage
ํน์ฑCookieLocalStorageSessionStorage
๋ฐ์ดํฐ ํฌ๊ธฐ ์ ํ | 4KB | 5MB | 5MB |
๋ฐ์ดํฐ ์ง์์ฑ | ๋ง๋ฃ ์ค์ ๊ฐ๋ฅ | ๋ธ๋ผ์ฐ์ ์ข ๋ฃ ์ ์ ์ง | ํญ์ด๋ ์ฐฝ ์ข ๋ฃ ์ ์ญ์ |
์๋ฒ์์ ๋๊ธฐํ | ์๋ | ์๋ | ์๋ |
๊ฒฐ๋ก : ์ฟ ํค, ์ธ์ ์ฌ์ฉํ ๊น?
์ฟ ํค๋ ์ฌ์ ํ ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ์ธ์ ๊ด๋ฆฌ์์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ํ์ง๋ง ์ต์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ฟ ํค์ ํจ๊ป LocalStorage ๋๋ SessionStorage๋ฅผ ์ ์ ํ ๋ณํํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค.
์ฟ ํค์ ํ์ฉ์ ์์ ์ฑ๊ณผ ํจ์จ์ฑ์ ์ํด ์ฒ ์ ํ ์ค๊ณ๋์ด์ผ ํ๋ฉฐ, HttpOnly, Secure, ๊ทธ๋ฆฌ๊ณ SameSite ๊ฐ์ ์์ฑ์ ์ ๊ทน ํ์ฉํด ๋ณด์ ์ทจ์ฝ์ ์ ์ต์ํํด์ผ ํฉ๋๋ค.
๐ท์ ์ค์ ๊ฐ๋ฐ์๊ฐ ๋์ด๋ด ์๋น! ๐ท