Web

๐Ÿช ์ฟ ํ‚ค๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

xeunnie 2025. 2. 18. 01:00
728x90
๋ฐ˜์‘ํ˜•

๐Ÿช ์ฟ ํ‚ค๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

 

์ฟ ํ‚ค๋Š” ์›น ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ฐ˜๋“œ์‹œ ์ดํ•ดํ•ด์•ผ ํ•  ํ•ต์‹ฌ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

“์›น์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค? ๊ทธ๋Ÿผ ์ฟ ํ‚ค๋ฅผ ์จ์•ผ ํ•˜๋‚˜?“๋ผ๋Š” ์งˆ๋ฌธ์„ ๋˜์ง€๋ฉฐ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์ฃ .

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ฟ ํ‚ค์˜ ๋„์ž… ๋ฐฐ๊ฒฝ, ์ €์žฅ ๋ฐฉ์‹, ํŠน์ง•๊ณผ ํ•จ๊ป˜, ์ฟ ํ‚ค๋ฅผ ํ™œ์šฉํ•  ๋•Œ ์•Œ์•„์•ผ ํ•  ๋ชจ๋“  ๋‚ด์šฉ์„ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

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 ๊ฐ™์€ ์†์„ฑ์„ ์ ๊ทน ํ™œ์šฉํ•ด ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๐ŸŒท์ „์„ค์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ด…์‹œ๋‹น! ๐ŸŒท

728x90
๋ฐ˜์‘ํ˜•