๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ—‚๏ธ ์Šคํ„ฐ๋”” ํ™œ๋™/๐Ÿ“— ๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ

[๋งˆ๋ฌด๋ฆฌ] ์›น ํ†ต์‹  ๊ธฐ์ดˆ

by ๐Ÿ’พ๊ณ ๊ตฌ๋งˆ๋ง›ํƒ•๋จน๊ณ ์‹ถ๋‹ค 2024. 10. 9.
728x90

1. HTTP์˜ ํŠน์ง•

HTTP(HyperText Transfer Protocol)๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ์‘์šฉ ๊ณ„์ธต์˜ ํ”„๋กœํ† ์ฝœ

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋น„์—ฐ๊ฒฐ(connectionless) ๋ฐ ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š”(stateless) ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ 

  • HTTP(Hyper Text Transfer Protocol)
    • ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์œ„ํ•œ ์‘์šฉ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ
    • ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ๋ชจ๋ธ ๊ธฐ๋ฐ˜
    • Stateless ํ”„๋กœํ† ์ฝœ: ํ†ต์‹ ์ด ๋๋‚˜๋ฉด ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์Œ
    • Connectionless ํ”„๋กœํ† ์ฝœ: ์š”์ฒญ-์‘๋‹ต ํ›„ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง
  • ์žฅ์ 
    • ์„œ๋ฒ„ ๋””์ž์ธ์ด ๊ฐ„๋‹จํ•จ
    • ๋…๋ฆฝ์ ์ธ ์š”์ฒญ-์‘๋‹ต ์ฒ˜๋ฆฌ
  • ๋‹จ์ 
    • ์ƒํƒœ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š์Œ → ๋งค๋ฒˆ ์ธ์ฆ ํ•„์š”
    • ์ฟ ํ‚ค(Cookie)์™€ ์„ธ์…˜(Session)์œผ๋กœ ํ•ด๊ฒฐ

2. HTTP์™€ HTTPS์˜ ์ฐจ์ด์ 

  • HTTP: ํ‰๋ฌธ ๋ฐ์ดํ„ฐ ์ „์†ก, ๋ณด์•ˆ ์ทจ์•ฝ
  • HTTPS: SSL์„ ํ†ตํ•ด ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ ์ „์†ก, ๋ณด์•ˆ ๊ฐ•ํ™”

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

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

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

  • ์ฟ ํ‚ค
    • ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋˜๋Š” ์ž‘์€ ์ •๋ณด ํŒŒ์ผ
    • ์ƒํƒœ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์—ฌ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ๋น ๋ฅด์ง€๋งŒ ๋ณด์•ˆ์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ์Œ
    • ํด๋ผ์ด์–ธํŠธ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ
  • ์„ธ์…˜
    • ์„œ๋ฒ„์— ์ €์žฅ๋˜์–ด ์‚ฌ์šฉ์ž ์ƒํƒœ๋ฅผ ์œ ์ง€ : ์„ธ์…˜ ID๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ ์‹๋ณ„(๋ฐ˜์˜๊ตฌ์ )
    • ๋ณด์•ˆ์ด ๋†’์ง€๋งŒ ์†๋„๊ฐ€ ๋Š๋ฆผ
    • ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ

๐Ÿšจ ์„ธ์…˜ ํƒˆ์ทจ

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

4. ์ฟ ํ‚ค์™€ ์„ธ์…˜์˜ ์ฐจ์ด์ 

  • ์ €์žฅ ์œ„์น˜: ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ์—, ์„ธ์…˜์€ ์„œ๋ฒ„์— ์ €์žฅ
  • ์†๋„: ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฒญ ์‹œ ์†๋„๊ฐ€ ๋น ๋ฅด์ง€๋งŒ, ์„ธ์…˜์€ ์„œ๋ฒ„ ์ž์›์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค.
  • ๋ณด์•ˆ: ์„ธ์…˜์ด ์ฟ ํ‚ค๋ณด๋‹ค ๋ณด์•ˆ์ด ๋” ์ข‹๋‹ค.
  • ๋ผ์ดํ”„ ์‚ฌ์ดํด: ์ฟ ํ‚ค๋Š” ๋งŒ๋ฃŒ ์‹œ์ ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ ํ›„์—๋„ ์œ ์ง€. ์„ธ์…˜์€ ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ ์‹œ ๋งŒ๋ฃŒ

5. ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ๊ณผ ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ

  • ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ: ์ƒํƒœ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์ €์žฅ (Stateful)
    • ๋‹จ์ผ ๋„๋ฉ”์ธ์— ์ ํ•ฉ
    • ํ™•์žฅ์„ฑ ๋‚ฎ์Œ, ๋ณด์•ˆ ๋ฌธ์ œ ์žˆ์Œ (์„ธ์…˜ ํ•˜์ด์žฌํ‚น)
  • ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ: ์„œ๋ฒ„์— ์ƒํƒœ ์ •๋ณด ์ €์žฅํ•˜์ง€ ์•Š์Œ (Stateless)
    • ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ์— ์ ํ•ฉ
  • ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์„œ๋ฒ„์— ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋Š” Statefulํ•œ ๊ตฌ์กฐ. CORS ๋ฌธ์ œ๋กœ ์ธํ•ด ๋‹จ์ผ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ด
  • ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ(ex. JWT)์€ Stateless ๊ตฌ์กฐ๋กœ, ์„œ๋ฒ„์— ์ƒํƒœ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ณ , ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ ์‹œ ํ† ํฐ์„ ํ•จ๊ป˜ ์ „์†กํ•˜์—ฌ ์ธ์ฆ. ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ์—์„œ ์ž‘๋™ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ™•์žฅ์„ฑ ์ข‹์Œ

6. JWT(JSON Web Token)

JWT๋Š” Claim ๊ธฐ๋ฐ˜์˜ ์›น ํ† ํฐ์œผ๋กœ, JSON ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•. ํ—ค๋”, ํŽ˜์ด๋กœ๋“œ, ์„œ๋ช…์œผ๋กœ ๊ตฌ์„ฑ, ์ (.)์œผ๋กœ ๊ตฌ๋ถ„. ํ† ํฐ ์ž์ฒด์— ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์—ฌ ์„œ๋ฒ„์˜ ์ €์žฅ์†Œ์— ์ƒํƒœ๋ฅผ ์ €์žฅํ•  ํ•„์š” ์—†์ด ์ธ์ฆ์„ ์ฒ˜๋ฆฌํ•˜๋Š” Self-Contained ๋ฐฉ์‹

728x90