[dreamhack] Cookie & Session

๋‚จ๋‹ค์€ยท2023๋…„ 2์›” 15์ผ
0

web hacking

๋ชฉ๋ก ๋ณด๊ธฐ
2/12

๐Ÿช ์ฟ ํ‚ค

ํƒ„์ƒ ๋ฐฐ๊ฒฝ

Connectionless, Stateless ํŠน์„ฑ์„ ๊ฐ–๋Š” HTTP์—์„œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค(Cookie)๊ฐ€ ํƒ„์ƒํ–ˆ๋‹ค.

์ฟ ํ‚ค๋Š” Key์™€ Value๋กœ ์ด๋ค„์ง„ ์ผ์ข…์˜ ๋‹จ์œ„๋กœ, ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ฟ ํ‚ค๋ฅผ ๋ฐœ๊ธ‰ํ•˜๋ฉด, ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ์ฟ ํ‚ค๋ฅผ ๊ฐ™์ด ์ „์†กํ•œ๋‹ค. ์„œ๋ฒ„๋Š” ์ฟ ํ‚ค๋ฅผ ํ™•์ธํ•จ์œผ๋กœ์จ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด ๊ธฐ๋ก๊ณผ ์ƒํƒœ ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค.


์ •๋ณด ๊ธฐ๋ก

์›น ์„œ๋น„์Šค ์‚ฌ์šฉ ์‹œ ํŒ์—… ์ฐฝ์— ๋œจ๋Š” "๋‹ค์‹œ ๋ณด์ง€ ์•Š๊ธฐ", "7์ผ ๊ฐ„ ํ‘œ์‹œํ•˜์ง€ ์•Š๊ธฐ" ๋ฒ„ํŠผ์ด ์กด์žฌํ•œ๋‹ค. ์›น ์„œ๋ฒ„๋Š” ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์˜ ํŒ์—… ์˜ต์…˜์„ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค์— ํ•ด๋‹น ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ํŒ์—… ์ฐฝ ํ‘œ์‹œ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•œ๋‹ค.
์ฟ ํ‚ค๋Š” ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•  ๋•Œ๋งˆ๋‹ค ์ „์†ก๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ฟ ํ‚ค๊ฐ€ ํ•„์š” ์—†๋Š” ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
๋•Œ๋ฌธ์— ์ตœ๊ทผ์—๋Š” Modern Storage APIs๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์„ ๊ถŒ์žฅํ•œ๋‹ค.

์ƒํƒœ ์ •๋ณด

์›น ์„œ๋ฒ„์—์„œ๋Š” ์ˆ˜๋งŽ์€ ํด๋ผ์ด์–ธํŠธ์˜ ๋กœ๊ทธ์ธ ์ƒํƒœ์™€ ์ด์šฉ์ž๋ฅผ ๊ตฌ๋ณ„ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ์ฟ ํ‚ค์— ์ €์žฅํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.


์ฟ ํ‚ค ๋ณ€์กฐ

์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋˜๊ณ  ์š”์ฒญ์— ํฌํ•จ๋˜๋Š” ์ •๋ณด์ด๋‹ค.
๋”ฐ๋ผ์„œ ์•…์˜์ ์ธ ํด๋ผ์ด์–ธํŠธ๋Š” ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ๋ณ€์กฐํ•ด์„œ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด์„œ ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•  ์ˆ˜ ์žˆ๋‹ค.


โš”๏ธ ์„ธ์…˜

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

์„ธ์…˜์€ ์ธ์ฆ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ณ  ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค(์œ ์ถ”ํ•  ์ˆ˜ ์—†๋Š” ๋žœ๋คํ•œ ๋ฌธ์ž์—ด) ๋ฅผ ๋งŒ๋“ค์–ด ํด๋ผ์ด์–ธํŠธ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. ํ•ด๋‹น ํ‚ค๋ฅผ Session ID๋ผ๊ณ  ํ•œ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋Š” Session ID๋ฅผ ์ฟ ํ‚ค์— ์ €์žฅํ•˜๊ณ  HTTP ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์„œ๋ฒ„๋Š” ์š”์ฒญ์— ํฌํ•จ๋œ ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์ธ์ฆ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค.

์ฟ ํ‚ค๋Š” ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ์ด์šฉ์ž๊ฐ€ ์ €์žฅํ•˜๋ฉฐ, ์„ธ์…˜์€ ์„œ๋ฒ„๊ฐ€ ์ €์žฅํ•œ๋‹ค๋Š” ์ฐจ์ด์ ์ด ์กด์žฌํ•œ๋‹ค.


์ฟ ํ‚ค ์ ์šฉ๋ฒ•

์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ๋Š” ์ €์žฅ๋œ ์ฟ ํ‚ค๋ฅผ ์กฐํšŒ, ์ˆ˜์ •, ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฟ ํ‚ค๋ฅผ ์„ค์ •ํ•  ๋•Œ์—๋Š” ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๊ณ , ๋งŒ๋ฃŒ ์‹œ๊ฐ„ ์ดํ›„์—๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฟ ํ‚ค๊ฐ€ ์‚ญ์ œ๋œ๋‹ค. ์ฟ ํ‚ค์˜ ๋งŒ๋ฃŒ๋Š” ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์—์„œ ๊ด€๋ฆฌ๋œ๋‹ค.

์ฟ ํ‚ค๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๋‘˜ ๋‹ค ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ์„œ๋ฒ„

HTTP ์‘๋‹ต ์ค‘ ํ—ค๋”์— ์ฟ ํ‚ค ์„ค์ • ํ—ค๋”(Set-Cookie)๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์˜ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์„ค์ •ํ•œ๋‹ค.

HTTP/1.1 200 OK
Server: Apache/2.4.29 (Ubuntu)
Set-Cookie: name=test;
Set-Cookie: age=30; Expires=Fri, 30 Sep 2022 14:54:50 GMT;
...

2. ํด๋ผ์ด์–ธํŠธ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•ด ์ฟ ํ‚ค๋ฅผ ์„ค์ •ํ•œ๋‹ค.

document.cookie = "name=test;"
document.cookie = "age=30; Expires=Fri, 30 Sep 2022 14:54:50 GMT;"

ํฌ๋กฌ Console์„ ํ™œ์šฉํ•˜๋Š” ๋ฒ•

  • ํฌ๋กฌ ํŽ˜์ด์ง€์—์„œ ์šฐํด๋ฆญํ–ˆ์„ ๋•Œ ํ‘œ์‹œ๋˜๋Š” ๊ฒ€์‚ฌ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  Consoleํƒญ์„ ๋ˆ„๋ฅธ ๋‹ค์Œ
    document.cookie๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

ํฌ๋กฌ Application์„ ํ™œ์šฉํ•˜๋Š” ๋ฒ•

  • ํฌ๋กฌ ํŽ˜์ด์ง€์—์„œ ์šฐํด๋ฆญํ–ˆ์„ ๋•Œ ํ‘œ์‹œ๋˜๋Š” ๊ฒ€์‚ฌ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ํ›„ Application ํƒญ์„ ๋ˆ„๋ฅธ๋‹ค. ์ขŒ์ธก์˜ ๋‚˜์—ด๋œ ๋ชฉ๋ก์—์„œ Cookies๋ฅผ ํŽผ์น˜๋ฉด Origin ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    Origin์„ ๋ˆ„๋ฅด๋ฉด ์„ค์ •๋œ ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ํ™•์ธ/์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฐ์Šต
  1. ๋“œ๋ฆผํ•ต ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์—์„œ ์šฐํด๋ฆญ ํ›„ ๊ฒ€์‚ฌ๋ฅผ ํด๋ฆญํ•˜๊ณ  Network ํƒญ์„ ๋ˆ„๋ฅธ๋‹ค. Preserve log๋ฅผ ์ฒดํฌํ•˜๊ณ  ๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด ๋กœ๊ทธ์ธ ์„ฑ๊ณต ์‹œ ์‘๋‹ต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
    ์‘๋‹ต์„ ์‚ดํŽด๋ณด๋ฉด, ์„œ๋ฒ„์—์„œ set-cookieํ—ค๋”๋ฅผ ํ†ตํ•ด ์„ค์ •๋œ ์ฟ ํ‚ค๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ํฌ๋กฌ ๊ฒ€์‚ฌ์—์„œ Application์„ ๋ˆ„๋ฅด๊ณ , Cookies ๋ชฉ๋ก ์•ˆ์˜ https://dreamhack.io๋ฅผ ๋ˆ„๋ฅด๋ฉด ์„œ๋ฒ„์˜ set-cookieํ—ค๋”๋ฅผ ํ†ตํ•ด ์„ค์ •๋œ ์ฟ ํ‚ค๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. sessionid ํ—ค๋”์˜ ๊ฐ’์„ ๋ฉ”๋ชจ์žฅ์— ๋ณต์‚ฌํ•œ ๋’ค sessionidํ—ค๋”์˜ ๊ฐ’์„ deleteํ•œ๋‹ค. ์„ธ์…˜ ๊ฐ’์„ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ๋กœ๊ทธ์ธ์ด ํ’€๋ ค์žˆ๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ์ฟ ํ‚ค์˜ ๋นˆ์นธ์„ ๋”๋ธ” ํด๋ฆญํ•ด์„œ sessionid ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ์ด์ „์— ๋ณต์‚ฌํ•œ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์˜ ์ฟ ํ‚ค์— ์„ธ์…˜ ๊ฐ’์ด ์„ค์ •๋œ๋‹ค. ์„ธ์…˜ ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ  ๋“œ๋ฆผํ•ต ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ๋กœ๊ทธ์ธ์ด ๋œ๋‹ค.
profile
์ฐจ๊ณก์ฐจ๊ณก ์Œ“์•„๋‚˜๊ฐ€๋Š” WEB FE ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€