1 - 0 - 5. Cookie & Session + ์ฟ ํค ๋ณ์กฐ + ์ฟ ํค ์ ์ฉ + ์ธ์ ํ์ด์ฌํน (Session Hijacking)
# ์ฟ ํค(Cookie)
: Key, Value ๋ก ์ด๋ฃจ์ด์ง ์ผ์ข ์ ๋จ์์ด์, Key-Value ํํ์ ๊ฐ์ด๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๋ ๊ฐ์ด ์ ์กํ๋ ๊ฒ์ผ๋ก, ์๋ฒ๋ ์ฟ ํค๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ๋ถํ๋ค.
- Cookie ์ฌ์ฉ ์ด์
: HTTP ํ๋กํ ์ฝ์ ํน์ง์ธ Connectionless, Stateless ๋๋ฌธ์ ์น ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ๊ธฐ์ตํ์ง ๋ชปํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํจ
Connectionless | Stateless |
ํ๋์ ์์ฒญ์ ๋ํด ํ๋์ ์๋ต๋ง์ ํ ํ ์ฐ๊ฒฐ ์ข
๋ฃ. ์ฐ๊ฒฐ์ด ์์ ๋๋ง๋ค ์๋ก์ด ์ฐ๊ฒฐ ์์ฑ |
ํต์ ์๋ฃ ํ ์ํ ์ ๋ณด ์ ์ฅ X ์ด์ ์ฐ๊ฒฐ์์ ์ด ๋ฐ์ดํฐ๋ฅผ ํ ์ฐ๊ฒฐ์์ ์๊ตฌํ ์ X |
- ์ฟ ํค ๋ณ์กฐ
: ์๋ฒ๊ฐ ์ถ๊ฐ์ ์ธ ๊ฒ์ฆ ๊ณผ์ ์ ๊ฑฐ์น์ง ์์ผ๋ฉด ์ ์๋ฅผ ๊ฐ์ง ์ด์ฉ์๊ฐ ์ฟ ํค ์ ๋ณด๋ฅผ ๋ณ์กฐํ์ฌ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ , ์ด๋ฅผ ํตํด ์ ๋ณด๋ฅผ ํ์ทจํ ์ ์์
# ์ธ์ (Session)
: ์ฟ ํค์ ํฌํจ๋ Session ID๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ์ ์ ์ฅ๋์ด์๋ ์ธ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ๋ฐฉ์์ผ๋ก, ํด๋ผ์ด์ธํธ๊ฐ ์ฟ ํค์ ๊ด๋ จ๋ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ณ์กฐํ๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ์ฌ์ฉํจ
- ์ธ์ ์ ๋์ ๋ฐฉ์
1. ์ธ์ฆ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์ฅ
2. ํด๋น ๋ฐ์ดํฐ์ ์ ๊ทผ ๊ฐ๋ฅํ ํค( = ์ ์ถ๊ฐ ๋ถ๊ฐ๋ฅํ ๋๋คํ ๋ฌธ์์ด = Session ID )์ ์์ฑ
3. ์์ฑํ ํค๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ก
4. ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ์ ํค๋ฅผ ์ฟ ํค์ ์ ์ฅ
5. ์ฐจํ HTTP ์์ฒญ์ ๋ณด๋ผ ๋, ๋ธ๋ผ์ฐ์ ๊ฐ ์ ์ฅํ ํค ์ฌ์ฉ
6. ์๋ฒ๊ฐ ์์ฒญ์ ํฌํจ๋ ํค์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ณ ์ธ์ฆ ์ํ ํ์ธ
- ์ธ์ ํ์ด์ฌํน (Session Hijacking)
: ๊ณต๊ฒฉ์๊ฐ ํ ์ด์ฉ์์ ์ฟ ํค๋ฅผ ํ์ณ ์ธ์ฆ ์ํ๋ ์ ๋ณด๋ฅผ ํ์ทจํ๋ ๊ณต๊ฒฉ ๊ธฐ๋ฒ
# ์ฟ ํค์ ์ธ์ ์ ์ฐจ์ด์ ๊ณผ ์ค์ต
์ฟ ํค | ์ธ์ |
๋ฐ์ดํฐ ์์ฒด๋ฅผ ์ด์ฉ์๊ฐ ์ ์ฅ | ์๋ฒ๊ฐ ๋ฐ์ดํฐ ์ ์ฅ |
# ์ฟ ํค ์ ์ฉ๋ฒ
: ํด๋ผ์ด์ธํธ๊ฐ ์ฟ ํค์ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ์ ์์ ์ผ๋ก ๋ณ์กฐํ๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ๋ธ๋ผ์ฐ์ ์์ ์ฟ ํค์ ๋ง๋ฃ ๊ธฐ๊ฐ ์ค์ ๊ฐ๋ฅ
- ์๋ฒ ์ธก
: 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;
...
- ํด๋ผ์ด์ธํธ ์ธก
: ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฟ ํค ์ค์
document.cookie = "name=test;"
document.cookie = "age=30; Expires=Fri, 30 Sep 2022 14:54:50 GMT;"
- ํฌ๋กฌ Application ํ์ฉ๊ณผ ์ฟ ํค ์ ๋ณด ํ์ธ ๋ฐ ์์
1. ํฌ๋กฌ ํ์ด์ง ์คํ
2. ๋ง์ฐ์ค ์ฐํด๋ฆญ ํ '๊ฒ์ฌ' ๋ฒํผ ํด๋ฆญ
3. Application ํญ์ผ๋ก ๊ฐ ๋ค Cookies ํผ์น๊ธฐ
- ํฌ๋กฌ Console ํ์ฉ๊ณผ ์ฟ ํค ์ ๋ณด ํ์ธ
1. ํฌ๋กฌ ํ์ด์ง ์คํ ํ ๋ง์ฐ์ค ์ฐํด๋ฆญ --> '๊ฒ์ฌ' ๋ฒํผ ํด๋ฆญ
2. Console ํญ ํด๋ฆญ ํ document.cookie ์ ๋ ฅ