๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Note for moment

์ฟ ํ‚ค(Cookie)์™€ ์„ธ์…˜(Session)

by ๐Ÿ’œautumn 2020. 9. 9.

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ์œ„ํ•ด์„œ HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋น„์—ฐ๊ฒฐ์ง€ํ–ฅํ˜•์ด๋ผ๋Š” ์ ์—์„œ ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„๋Š” ์ค„์–ด๋“ค์ง€๋งŒ ๋งค๋ฒˆ ๊ฐ™์€ ์—ฐ๊ฒฐ ์ ˆ์ฐจ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—,

์ฟ ํ‚ค์™€ ์„ธ์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

 # HTTP protocol 

  - ๋น„์—ฐ๊ฒฐ์ง€ํ–ฅํ˜•ํ”„๋กœํ† ์ฝœ : ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋Œ€ํ•ด ์„œ๋ฒ„ ์‘๋‹ต์ด ์™„๋ฃŒ๋˜๋ฉด ์—ฐ๊ฒฐ์„ ๋Š๋Š” ํŠน์„ฑ

  - ์ปค๋„ฅ์…˜์„ ๋Š๋Š” ์ˆœ๊ฐ„ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ํ†ต์‹ ์ด ๋๋‚˜๋ฉฐ ์ด์— ๋Œ€ํ•œ ์ƒํƒœ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š” ํŠน์„ฑ

 

1. ์ฟ ํ‚ค(Cookie)

  : ํด๋ผ์ด์–ธํŠธ ์ธก์— ์ €์žฅ๋˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ(ํ‚ค์™€ ๊ฐ’) โžก๏ธŽ ํด๋ผ์ด์–ธํŠธ์ธก์— ์ €์žฅ๋˜์—ˆ๋‹ค ์š”์ฒญ์‹œ ์ฐธ์กฐ๋จ

  : ์ฟ ํ‚ค๋Š” ์„œ๋ฒ„์—์„œ HTTP Response Header์˜ Set-Cookie์†์„ฑ์„ ์ด์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ฟ ํ‚ค๋ฅผ ์ œ๊ณต

  : ์ฟ ํ‚ค๋Š” ์ด๋ฆ„, ๊ฐ’, ๋งŒ๋ฃŒ์ผ์‹œ(์ €์žฅ๊ธฐ๊ฐ„), ๊ฒฝ๋กœ, ์ •๋ณด ๋“ฑ์„ ํฌํ•จ

  : ๋งŒ๋ฃŒ์ผ์‹œ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ฒฝ์šฐ ์„ธ์…˜์ฟ ํ‚ค๋กœ, ๋งŒ๋ฃŒ์ผ์‹œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํ•ญ์ƒ ์œ ์ง€ํ•˜๋Š” ์ง€์†์ฟ ํ‚ค์— ์ €์žฅ

  : ์ฟ ํ‚ค๋Š” ์‚ฌ์šฉ์ž์˜ ๋ณ„๋„ ์š”์ฒญ ์—†์ด๋„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž๋™์œผ๋กœ Request ํ—ค๋”์— ๋‹ด์•„ ์š”์ฒญํ•œ๋‹ค

  # ์ฟ ํ‚ค ํ”„๋กœ์„ธ์Šค  

      โ‘  ๋ธŒ๋ผ์šฐ์ € ์›นํŽ˜์ด์ง€ ์ ‘์†

      โ‘ก ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์‹œ HTTPํ—ค๋”์— ์„œ๋ฒ„๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ฟ ํ‚ค๊ฐ’์„ ๊ฐ™์ด ์คŒ โžก๏ธŽ ์ด๋•Œ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฟ ํ‚ค๋ฅผ ๋ฐ›์•„ ์ €์žฅ

      โ‘ข ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์žฌ์š”์ฒญ์‹œ ์ €์žฅํ•œ ์ฟ ํ‚ค ์ •๋ณด๋„ ๊ฐ™์ด HTTPํ—ค๋”์— ๋‹ด์•„์„œ ์š”์ฒญ

      โ‘ฃ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์—์„œ ์ฟ ํ‚ค๊ฐ’์„ ์ฐธ๊ณ ํ•˜์—ฌ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ (e.g. ๋กœ๊ทธ์ธ์ƒํƒœ์œ ์ง€..)

    1) ์„ธ์…˜์ฟ ํ‚ค(Session Cookie)

       : ๋งŒ๋ฃŒ์ผ์‹œ๊ฐ€ ์ •ํ•ด์ง„ ์ฟ ํ‚ค

       : ๋ธŒ๋ผ์šฐ์ € ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋ฏ€๋กœ, ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ์‹œ ์ฟ ํ‚ค๋Š” ์ž๋™์†Œ๋ฉธ โ‡จ ๋ณด์•ˆ์ƒ ์ง€์†์ฟ ํ‚ค๋ณด๋‹ค ์•ˆ์ „

   2) ์ง€์†์ฟ ํ‚ค(Persistent Cookie)

       : ๋งŒ๋ฃŒ์ผ์‹œ๊ฐ€ ์—†์–ด ํ•ญ์ƒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋œ ์ฟ ํ‚ค

       : ํŒŒ์ผ๋กœ ์ €์žฅ๋˜์–ด, ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ์‹œ์—๋„ ์ฟ ํ‚ค ์œ ์ง€

 

2. ์„ธ์…˜(Session)

  : ์›น์„œ๋ฒ„์— ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ ์ •๋ณด๋ฅผ ์ €์žฅ โžก๏ธŽ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ๋Š” ํด๋ผ์ด์–ธํŠธ ๊ตฌ๋ถ„ํ• ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ๊ฐ’์ธ SessionID ๋ถ€์—ฌ

  : ์ฆ‰ ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด๋Š” ์„œ๋ฒ„์— ๋‘๊ณ  SessionID๋ฅผ ์ด์šฉํ•ด ์ธ์ฆํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹

   # ์„ธ์…˜ ํ”„๋กœ์„ธ์Šค  

     โ‘  ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์‹œ, ํ•„์š”์— ๋”ฐ๋ผ ์„ธ์…˜์— ํด๋ผ์ด์–ธํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ ํ›„ SessionID๋ฅผ ๋ฐœ๊ธ‰

     โ‘ก ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐœ๊ธ‰๋ฐ›๋Š” SessionID๋ฅผ ์ฟ ํ‚ค๋กœ ์ €์žฅ (e.g. JSESSIONID)

     โ‘ข ํด๋ผ์ด์–ธํŠธ ์žฌ์š”์ฒญ์‹œ ์„ธ์…˜ID๋ฅผ ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜์—ฌ ์ƒํƒœ์ •๋ณด๋ฅผ ์„œ๋ฒ„๊ฐ€ ํ™œ์šฉํ•˜๊ฒŒ ํ•จ

 

3. ์ฟ ํ‚ค๊ณผ ์„ธ์…˜์˜ ์ฐจ์ด

 

 

4. ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜์ง€์•Š๊ณ , ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ?

์„ธ์…˜์ด ๋ณด์•ˆ์ธก๋ฉด์—์„œ ์šฐ์ˆ˜ํ•˜์ง€๋งŒ,

์„ธ์…˜์€ ์„œ๋ฒ„์˜ ์ž์›์„ ํ™œ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์ž์›์˜ ํ•œ๊ณ„๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋ถ€ํ•˜๋กœ ์†๋„์ €ํ•˜ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๋‹ค.

 

5. ์บ์‹œ๋ž€?

์ž์›(์ด๋ฏธ์ง€, cssํŒŒ์ผ, jsํŒŒ์ผ ๋“ฑ)์„ ์‚ฌ์šฉ์ž ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ ํ›„ ํ•ด๋‹น ์ž์› ๋กœ๋“œ์‹œ ์บ์‹œ๋˜์–ด์žˆ๋Š” ์ž์›์„ ์žฌ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ

โžก๏ธŽ ํด๋ผ์ด์–ธํŠธ์˜ ์ž์›์„ ์•„๋‚„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์บ์‹œ๋œ ์ž์›์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋ณ€๊ฒฝ ์ž์›์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

โžก๏ธŽ ์ด์— ์‚ฌ์šฉ์ž๋Š” ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ๋ฅผ ์ง€์šฐ๊ฑฐ๋‚˜, ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์‘๋‹ต์‹œ Header์— ์ž์› ์บ์‹œ ๋งŒ๋ฃŒ์ผ์‹œ๋ฅผ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ

 

 

๋Œ“๊ธ€