BackEnd๐Ÿงต

[Web]Cookie / Session

hae02y 2023. 7. 19. 21:23
๋ฐ˜์‘ํ˜•

Cookie

์ฟ ํ‚ค๋Š” ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ค‘์˜ ํ•˜๋‚˜์ด๋‹ค. HTTP์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ• ์ˆ˜์—†๋‹ค. ์ฆ‰ ์›น์‚ฌ์ดํŠธ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๊ตฌ๋ณ„ํ• ์ˆ˜ ์—†๊ณ , ์‚ฌ์šฉ์ž๋Š” ๋งค๋ฒˆ ์ธ์ฆ์ ˆ์ฐจ๋ฅผ ์ง„ํ–‰ํ•ด์•ผํ•œ๋‹ค.(HTTPํ”„๋กœํ† ์ฝœ์˜ Connectionless, Statelessํ•จ ๋•Œ๋ฌธ์—) ํ•˜์ง€๋งŒ ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ๊ธฐ์–ตํ• ์ˆ˜์žˆ๊ฒŒ ํ•˜๊ณ  ์ด๊ฒƒ์ด ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์ด๋‹ค. 

 

Cookie์˜ ์˜ต์…˜

1. Domain

๋„๋ฉ”์ธ์€ www.naver.com๊ณผ   ๊ณผ ๊ฐ™์ด ์„œ๋ฒ„์— ์ ‘์†ํ• ์ˆ˜์žˆ๋Š” ์ฃผ์†Œ๋ฅผ ๋งํ•œ๋‹ค. ๋งŒ์•ฝ ์š”์ฒญํ•ด์•ผํ•  URL์ด http://www.example.com:3000/users/login ์ด๋ผ๋ฉด ์—ฌ๊ธฐ์—์„œ ๋„๋ฉ”์ธ์€ example.com์ด ๋œ๋‹ค. ์ฟ ํ‚ค์˜ต์…˜์— ๋„๋ฉ”์ธ ์ •๋ณด๊ฐ€ ์กด์žฌํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ์ฟ ํ‚ค์˜ ๋„๋ฉ”์ธ ์˜ต์…˜๊ณผ ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ์ด ์ผ์น˜ํ•ด์•ผ์ง€๋งŒ ์ฟ ํ‚ค๋ฅผ ์ „์†ก ๊ฐ€๋Šฅํ•˜๋‹ค.

 

2. Path

์„ธ๋ถ€๊ฒฝ๋กœ๋Š” ์„œ๋ฒ„๊ฐ€ ๋ผ์šฐํŒ…์‹œ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ๋กœ์ด๋‹ค. ์š”์ฒญํ•˜๋Š” URL์ด http://www.example.com:3000/users/login ์ผ๋•Œ ์—ฌ๊ธฐ์—์„œ Path๋Š” /users/login์ด ๋œ๋‹ค. ๋ช…์‹œ๊ฐ€ ์—†๋‹ค๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ / ์œผ๋กœ ์„ค์ •๋œ๋‹ค.Path์˜ ํŠน์ง•์€ ์„ค์ •๋œ Path๋ฅผ ์ „๋ถ€ ๋งŒ์กฑํ•˜๋ฉด, ์š”์ฒญํ•˜๋Š” Path๊ฐ€ ์ถ”๊ฐ€๋กœ ์กด์žฌํ•˜๋”๋ผ๋„ ์ฟ ํ‚ค๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†กํ• ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด

Path : /users ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค๋ฉด, ์š”์ฒญ๊ฒฝ๋กœ๊ฐ€ /users/something ์ธ๊ฒฝ์šฐ์—๋„ ์ฟ ํ‚ค์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด /users๋ฅผ ๋งŒ์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

3. MaxAge or Expires

์ฟ ํ‚ค๊ฐ€ ์œ ํšจํ•œ ์œ ํšจ๊ธฐ๊ฐ„์„ ์ •ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

MaxAge๋Š” ์•ž์œผ๋กœ ์ฟ ํ‚ค๊ฐ€ ๋ช‡์ดˆ๋™์•ˆ ์œ ํšจํ•œ์ง€ ์„ค์ •ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค. Expires๋Š” ์–ธ์ œ๊นŒ์ง€ ์œ ํšจํ•œ์ง€ Date๋ฅผ ์ง€์ •ํ•œ๋‹ค.

๊ธฐ์ค€์€ ํด๋ผ์ด์–ธํŠธ์˜ ์‹œ๊ฐ„์œผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๊ณ , ์ง€์ •๋œ ์‹œ๊ฐ„๊ณผ ๋‚ ์งœ๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ์ฟ ํ‚ค๋Š” ์ž๋™์œผ๋กœ ํŒŒ๊ดด๋œ๋‹ค. ์ด์˜ต์…˜์˜ ์—ฌ๋ถ€์— ๋”ฐ๋ผ์„œ Session Cookie์™€ Persistent Cookie๋กœ ๋‚˜๋ˆˆ๋‹ค. 

Session Cookie : MaxAge / Expires ์˜ต์…˜์ด ์—†๋Š” ์ฟ ํ‚ค, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‹คํ–‰์ค‘์ผ๋•Œ ์‚ฌ์šฉํ• ์ˆ˜์žˆ๋Š” ์ž„์‹œ ์ฟ ํ‚ค์ด๋ฉฐ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•˜๋ฉด ์ฟ ํ‚ค๊ฐ€ ์‚ญ์ œ๋œ๋‹ค.

Persistent Cookie : ๋ธŒ๋ผ์šฐ์ €์˜ ์ข…๋ฃŒ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด MaxAge / Expires์— ์ง€์ •๋œ ์œ ํšจ์‹œ๊ฐ„๋งŒํผ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ฟ ํ‚ค์ด๋‹ค.

 

4. Secure

์ฟ ํ‚ค์ „์†ก์‹œ์— ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ผ ์ฟ ํ‚ค ์ „์†ก์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. Secure์˜ต์…˜์ด true์ผ๋•Œ๋Š” HTTPS ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ฟ ํ‚ค์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค. Secure์ด false์ผ๋•Œ๋Š” Https, Http ๋ชจ๋‘ ์ฟ ํ‚ค์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

5. HttpOnly

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ธŒ๋ผ์šฐ์ €์˜ ์ฟ ํ‚ค์— ์ ‘๊ทผ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ์˜ต์…˜์ด true์ผ ๊ฒฝ์šฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ฟ ํ‚ค์— ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๋””ํดํŠธ๋Š” false๋กœ ์ง€์ •๋˜์–ด์žˆ๊ณ , ํ•ด๋‹น์˜ต์…˜์ด false์ธ๊ฒฝ์šฐ XSS๊ณต๊ฒฉ์— ์ทจ์•ฝํ•ด์ง„๋‹ค.

 

6. SameSite

Cross-Site์š”์ฒญ์„ ๋ฐ›๋Š”๊ฒฝ์šฐ, ์š”์ฒญ์—์„œ ์‚ฌ์šฉํ•œ ๋ฉ”์„œ๋“œ์™€ ํ•ด๋‹น์˜ต์…˜์˜ ์กฐํ•ฉ์„ ๊ธฐ์ค€์œผ๋กœ ์„œ๋ฒ„์˜ ์ฟ ํ‚ค ์ „์†ก ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. 

 

๊ฒฐ๋ก 

์ฟ ํ‚ค์˜ ํŠน์„ฑ์„ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ธ์ฆ์ •๋ณด๋ฅผ ๋‹ด์€ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•˜๊ณ , ์ฟ ํ‚ค๋Š” ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๋ฅผ ์š”์ฒญ๊ณผ ๊ฐ™์ด ์ „์†กํ•˜์—ฌ Stateless ํ•œ ์ธํ„ฐ๋„ท์„ Statefulํ•˜๊ฒŒ ์œ ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์ฟ ํ‚ค์— ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋‹ด๋Š”๊ฒƒ์€ ์œ„ํ—˜ํ•˜๋‹ค.

 

Session

์„ธ์…˜์€ ์ฟ ํ‚ค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์ •๋ณด๋ฅผ ๋ธŒ๋ผ์šฐ์ €(ํด๋ผ์ด์–ธํŠธ)๊ฐ€ ์•„๋‹Œ ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌํ•œ๋‹ค. ์ •๋ณด๋ฅผ ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ๋•Œ๋ฌธ์— ๋ณด์•ˆ์„ฑ์ด ๋†’์ง€๋งŒ, ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์ฐจ์ง€ํ•˜์—ฌ ์„ฑ๋Šฅ์ €ํ•˜์˜ ์›์ธ์ด ๋ ์ˆ˜์žˆ๋‹ค. 

 

์„ธ์…˜์˜ ๋™์ž‘

1. ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„์— ์ ‘์† ํ•˜๋ฉด ์„ธ์…˜ID๋ฅผ ๋ฐœ๊ธ‰ ๋ฐ›๋Š”๋‹ค.

2. ํด๋ผ์ด์–ธํŠธ๋Š” ์„ธ์…˜ID์— ๋Œ€ํ•ด ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ €์žฅํ•˜๊ณ  ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋‹ค.

3. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ์š”์ฒญ์„ ํ• ๋•Œ, ์ฟ ํ‚ค์˜ ์„ธ์…˜ ID๋ฅผ ๊ฐ™์ด ์„œ๋ฒ„์— ์ „๋‹ฌํ•ด์„œ ์š”์ฒญํ•œ๋‹ค.

4. ์„œ๋ฒ„๋Š” ์„ธ์…˜ID๋ฅผ ์ „๋‹ฌ ๋ฐ›์•„์„œ ๋ณ„๋‹ค๋ฅธ ์ž‘์—…์—†์ด ์„ธ์…˜ ID๋กœ ์„ธ์…˜์— ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•œ๋‹ค.

5. ํด๋ผ์ด์–ธํŠธ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์„œ๋ฒ„ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ตํ•œ๋‹ค.

 

๊ฒฐ๋ก 

์ฟ ํ‚ค์™€ ์„ธ์…˜์€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. ์ฐจ์ด์ ์€ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š” ์œ„์น˜์ธ๋ฐ, ์ฟ ํ‚ค๋Š” ์„œ๋ฒ„์˜ ์ž์›์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์„ธ์…˜์€ ์„œ๋ฒ„์˜ ์ž์›์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์  ๋•Œ๋ฌธ์— ์ฟ ํ‚ค์— ๋น„ํ•ด ์„ธ์…˜์ด ๋ณด์•ˆ์„ฑ์ด ๋†’์€ ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์„œ๋ฒ„์˜ ์ž์›์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ ์ˆ˜์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•œ๊ฒƒ์ด ํ† ํฐ๊ธฐ๋ฐ˜์˜ ์ธ์ฆ๋ฐฉ์‹(JWT ๋“ฑ..)์˜ ๋Œ€์•ˆ์ด ๋‚˜์™€์„œ ์‚ฌ์šฉ๋˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

์ฐธ์กฐ

https://interconnection.tistory.com/74

https://raonctf.com/essential/study/web/session_connection

 

๋ฐ˜์‘ํ˜•