๐Ÿ”ฌComputer Science/๋„คํŠธ์›Œํฌ

TIL) Cookie ์ •์˜, Session ์ •์˜, ์ฟ ํ‚ค์™€ ์„ธ์…˜์˜ ์ฐจ์ด

hellohailie 2022. 7. 14. 13:52

์ธ์ฆ์— ํ•„์š”ํ•œ ๊ธฐ๋ณธ ์ง€์‹ Cookie

Cookie ๋ฐฐ๊ฒฝ

์‡ผํ•‘๋ชฐ์—์„œ ์‚ด ์•„์ดํ…€์„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋„ฃ๊ณ  ์—ฌ๊ธฐ์ €๊ธฐ ๋Œ์•„๋‹ค๋…€๋„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์•ˆ์˜ ์•„์ดํ…œ์€ ์œ ์ง€๊ฐ€ ๋œ๋‹ค. 

HTTP๋Š” stateless (๋ฌด์ƒํƒœ์„ฑ)์ธ๋ฐ ์–ด๋–ป๊ฒŒ ์ •๋ณด๊ฐ€ ์œ ์ง€ ๋ ๊นŒ? 

๋ฐ”๋กœ ์ฟ ํ‚ค Cookie ๋•๋ถ„์ด๋‹ค! ๐Ÿช


Cookie ๋ž€?

์–ด๋–ค ์›น ์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ”์„ ๋•Œ, ์„œ๋ฒ„๊ฐ€ ์ผ๋ฐฉ์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ

์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ์— ์˜์†์„ฑ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์„œ๋ฒ„๊ฐ€ ์›ํ•œ๋‹ค๋ฉด ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

ํ•ด๋‹น ๋„๋ฉ”์ธ์— ๋Œ€ํ•ด ์ฟ ํ‚ค๊ฐ€ ์กด์žฌํ•˜๋ฉด, ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ๋„๋ฉ”์ธ์—๊ฒŒ http ์š”์ฒญ ์‹œ ์ฟ ํ‚ค๋ฅผ ํ•จ๊ป˜ ์ „๋‹ฌํ•œ๋‹ค. 

 

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

 


Cookie ์ด์šฉ๋ฒ•

์‚ญ์ œํ•˜์ง€ ์•Š์œผ๋ฉด  ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค๋Š” ํŠน์„ฑ์„ ์ด์šฉํ•ด๋ณด์ž!

์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ, ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€, ์‚ฌ์šฉ์ž ์„ ํ˜ธ, ํ…Œ๋งˆ ๋“ฑ ์žฅ์‹œ๊ฐ„ ๋ณด์กดํ•ด์•ผํ•˜๋Š” ์ •๋ณด ์ €์žฅ์— ์ ํ•ฉํ•˜๋‹ค. 

 

์ฟ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ € ์„ค์ • ์ฐฝ์— ๊ฐ€๋ฉด ๊ธˆ๋ฐฉ ๋…ธ์ถœ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๊ณ  ๋ณ€์กฐํ•˜๊ธฐ๋„ ์‰ฝ๋‹ค. ๊ทธ๋ž˜์„œ ์ฟ ํ‚ค๋Š” ์•Œ์•„๋ณด๊ธฐ ์–ด๋ ต๊ฒŒ ์•”ํ˜ธํ™”๋œ ๋‚ด์šฉ์œผ๋กœ ์ฑ„์›Œ์ ธ ์žˆ๋‹ค. ํŠนํžˆ ์ธ์ฆ์ •๋ณด์™€ ๊ฐ™์ด ๋ฏผ๊ฐํ•œ ์ •๋ณด์—๋Š” hashing ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์–ด์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋งˆ์ €๋„ ์œ„ํ—˜ํ•˜๋‹ค. ์™œ๋ƒ๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ฟ ํ‚ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 


Cookie ์ „๋‹ฌ ๋ฐฉ๋ฒ•

์ฟ ํ‚ค๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋˜๊ณ  ์ž๋™์œผ๋กœ ์š”์ฒญ๋˜๋Š” ํ™”๋ฉด์—์„œ,

 

์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ—ค๋”์— set-cookie ๋ผ๋Š” ํ”„๋กœํผํ‹ฐ์— ์ฟ ํ‚ค์˜ ์ด๋ฆ„, ๊ฐ’, ๊ฒฝ๋กœ ๋“ฑ์˜ ์˜ต์…˜์„ ์ €์žฅํ•œ๋‹ค. 

์ฟ ํ‚ค๊ฐ€ ๋‹ด๊ธด ์‘๋‹ต์„ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ์‘๋‹ตํ—ค๋”์— ์กด์žฌํ•˜๋Š” set-cookie๋ฅผ ํ™•์ธํ•˜๊ณ , ๋‹ค์Œ์— ์กด์žฌํ•˜๋Š” ์ฟ ํ‚ค๋ฅผ ๋งค ์š”์ฒญ์‹œ๋งˆ๋‹ค ์ฟ ํ‚ค์˜ ์ด๋ฆ„๊ณผ ๊ฐ’์„ ์„œ๋ฒ„์— ์ „๋‹ฌํ•œ๋‹ค.

 

์„œ๋ฒ„๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•˜๋ฉด, ์ดํ›„๋กœ๋Š” ํ•ด๋‹น ์›น์‚ฌ์ดํŠธ๋ฅผ ์ด์šฉํ•  ๋•Œ ๋งค ์š”์ฒญ์— ์ž๋™์œผ๋กœ ์ฟ ํ‚ค๊ฐ€ ํ•จ๊ป˜ ์ „์†ก๋œ๋‹ค. 

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

 


Cookie์—์„œ ์„ค์ • ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ options

 

'Set-Cookie':[
            'cookie=yummy', 
            'Secure=Secure; Secure',
            'HttpOnly=HttpOnly; HttpOnly',
            'Path=Path; Path=/cookie',
            'Doamin=Domain; Domain=codestates.com'
        ]

 

  • Domain = ์„œ๋ฒ„์™€ ์š”์ฒญ์˜ ๋„๋ฉ”์ธ์ด ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ์ฟ ํ‚ค ์ „์†ก // naver.com์—์„œ ๋ฐ›์€ ์ฟ ํ‚ค๋ฅผ google.com์— ์ „์†กํ•˜๋Š” ์ผ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

์ฟ ํ‚ค ์˜ต์…˜์—์„œ ๋„๋ฉ”์ธ์€ ํฌํŠธ ๋ฐ ์„œ๋ธŒ ๋„๋ฉ”์ธ ์ •๋ณด, ์„ธ๋ถ€ ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค. ์—ฌ๊ธฐ์„œ ์„œ๋ธŒ ๋„๋ฉ”์ธ์ด๋ž€ www ๊ฐ™์€ ๋„๋ฉ”์ธ ์•ž์— ์ถ”๊ฐ€๋กœ ์ž‘์„ฑ๋˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. 

ex) ์š”์ฒญํ•ด์•ผํ•ญ URL์ด์™€ ๊ฐ™๋‹ค๋ฉด, https://www.google.com/

Domain ์€ google.com ์ด ๋œ๋‹ค. 

 

  • Path = ์„œ๋ฒ„์™€ ์š”์ฒญ์˜ ์„ธ๋ถ€๊ฒฝ๋กœ(์„œ๋ฒ„๊ฐ€ ๋ผ์šฐํŒ…ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ๋กœ)๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ์ฟ ํ‚ค ์ „์†ก

ex) ์š”์ฒญํ•ด์•ผํ•ญ URL์ด์™€ ๊ฐ™๋‹ค๋ฉด, https://www.google.com/search?q=%EC%9C%

Path ๋Š” /search?q=%EC%9C% ๊ฐ€ ๋œ๋‹ค. 

 

Path ์˜ต์…˜์˜ ํŠน์ง•์€ ์„ค์ •๋œ ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•˜๋Š” ํ•˜์œ„ ๊ฒฝ๋กœ๋กœ ์š”์ฒญ์„ ํ•˜๋”๋ผ๋„ ์ฟ ํ‚ค๋ฅผ ์„œ๋ฒ„์— ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.

์ฆ‰ Path๊ฐ€ /users๋กœ ์„ค์ •๋˜์–ด ์žˆ๊ณ , ์š”์ฒญํ•˜๋Š” ์„ธ๋ถ€ ๊ฒฝ๋กœ๊ฐ€ /users/utube ์ธ ๊ฒฝ์šฐ๋ผ๋ฉด ์ฟ ํ‚ค ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•˜์ง€๋งŒ /posts/utube๋กœ ์ „์†ก๋˜๋Š” ์š”์ฒญ์€ Path ์˜ต์…˜(/users)์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋กœ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•  ์ˆ˜ ์—†๋‹ค.

  • MaxAge or Expires = ์ฟ ํ‚ค์˜ ์œ ํšจ๊ธฐ๊ฐ„ ์„ค์ • -> ์ผ์ • ์‹œ๊ฐ„ ํ›„ ์ž๋™ ์†Œ๋ฉธ๋œ๋‹ค. 

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

Expires์€ MaxAge์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์–ธ์ œ๊นŒ์ง€ ์ฟ ํ‚ค๊ฐ€ ์œ ํšจํ•œ์ง€ ์‹ฌํŒ์˜ ๋‚ ์„ ์ง€์ • (ํด๋ผ์ด์–ธํŠธ์˜ ์‹œ๊ฐ„์„ ๊ธฐ์ค€)

 

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

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

 

  • HttpOnly = ์Šคํฌ๋ฆฝํŠธ์˜ ์ฟ ํ‚ค ์ ‘๊ทผ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ๊ฒฐ์ • -> ์ฟ ํ‚ค๋Š” ๊ฒฝ์šฐ์— ๋”ฐ๋ผ scriptํƒœ๊ทธ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” XSS ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•˜๋‹ค. HttpOnly ์˜ต์…˜์„ ์ฃผ๋ฉด scriptํƒœ๊ทธ๋กœ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. 

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

๋ช…์‹œ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ์œผ๋กœ false๋กœ ์ง€์ •๋˜์–ด ์žˆ๋‹ค. (๊ธฐ๋ณธ๊ฐ’ false)

์˜ต์…˜์ด false์ธ ๊ฒฝ์šฐ document.cookie๋ฅผ ์ด์šฉํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ฟ ํ‚ค์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ XSS ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•ด์ง„๋‹ค. 

 

  • Secure = HTTPS ํ”„๋กœํ† ์ฝœ์—์„œ๋งŒ ์ฟ ํ‚ค ์ „์†ก ์—ฌ๋ถ€ ๊ฒฐ์ •

Secure ์˜ต์…˜์ด true๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ HTTPS๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

Secure ์˜ต์…˜์ด ์—†๋‹ค๋ฉด ํ”„๋กœํ† ์ฝœ์— ์ƒ๊ด€์—†์ด http://www.google.com ๋˜๋Š” https://www.google.com์— ๋ชจ๋‘ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  • SameSite = CORS ์š”์ฒญ์˜ ๊ฒฝ์šฐ ์˜ต์…˜ ๋ฐ ๋ฉ”์„œ๋“œ์— ๋”ฐ๋ผ ์ฟ ํ‚ค ์ „์†ก ์—ฌ๋ถ€ ๊ฒฐ์ • // Cross-Origin ์š”์ฒญ์„ ๋ฐ›์€ ๊ฒฝ์šฐ ์š”์ฒญ์—์„œ ์‚ฌ์šฉํ•œ ๋ฉ”์†Œ๋“œ์™€ ํ•ด๋‹น ์˜ต์…˜(e.g. GET, POST, PUT, PATCH …)์˜ ์กฐํ•ฉ์„ ๊ธฐ์ค€์œผ๋กœ ์„œ๋ฒ„์˜ ์ฟ ํ‚ค ์ „์†ก ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

์€ํ–‰ ์‚ฌ์ดํŠธ์— ๋กœ๊ทธ์ธ ๋˜์–ด์žˆ๋Š” ์ƒํƒœ์—์„œ CSRF ๊ณต๊ฒฉ์„ ๋ฐ›์€ ๊ฒฝ์šฐ

1. A๋ผ๋Š” ์‚ฌ๋žŒ์ด ์€ํ–‰ ์‚ฌ์ดํŠธ์— ๋กœ๊ทธ์ธ ํ•œ๋‹ค. 

2. ์€ํ–‰์€ A์—๊ฒŒ ์œ ํšจํ•œ ํ† ํฐ์„ ํ• ๋‹นํ•œ๋‹ค. 

3. ํ•ด์ปค๊ฐ€ ์€ํ–‰์˜ ์š”์ฒญ์œผ๋กœ ๊ฐ€์žฅํ•œ ์œ„์กฐ๋œ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. 

4. ํ•ด์ปค์˜ ๋งํฌ๋ฅผ ํด๋ฆญํ•œ A๋Š” ์ž๊ธฐ๋„ ๋ชจ๋ฅด๋Š” ์ƒˆ ์€ํ–‰์— ์œ„์กฐ๋œ ์š”์ฒญ์ด ๋ณด๋‚ด์ง„๋‹ค. 

5. ์œ„์กฐ๋œ ์š”์ฒญ์€ ์ด์ „์— ํ• ๋‹น๋œ A์˜ ์œ ํšจํ•œ ํ† ํฐ์„ ํ†ตํ•ด ์€ํ–‰์—์„œ ์‹คํ–‰๋œ๋‹ค. 

 

- Lax = Cross-Origin์—์„œ GET ๋ฉ”์„œ๋“œ ์š”์ฒญ๋งŒ ์ฟ ํ‚ค ์ „์†ก ๊ฐ€๋Šฅ

- Strict = ์ฟ ํ‚ค ์ „์†ก ๋ถˆ๊ฐ€ // Cross-Origin์ด ์•„๋‹Œ same-site ์ธ ๊ฒฝ์šฐ์—๋งŒ ์ฟ ํ‚ค๋ฅผ ์ „์†ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

- None = Cross-Origin์—์„œ ๋ชจ๋“  ๋ฉ”์„œ๋“œ ์š”์ฒญ์— ๋Œ€ํ•ด ์ฟ ํ‚ค ์ „์†ก ๊ฐ€๋Šฅ // Secure ์ฟ ํ‚ค ์˜ต์…˜์ด ํ•„์š”ํ•˜๋‹ค!

 

์„œ๋ฒ„์—์„œ ์ฟ ํ‚ค๊ฐ€ ์ „์†ก๋˜์ง€ ์•Š์œผ๋ฉด์„œ ๋„คํŠธ์›Œํฌ ํƒญ์—์„œ ์…‹์ฟ ํ‚ค(Set-Cookie) ์˜†์— ๊ฒฝ๊ณ  ์•„์ด์ฝ˜์ด ๋ณด์ธ๋‹ค๋ฉด  SameSite='none' ์œผ๋กœ ์„ค์ •ํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

- ์ด๋•Œ same-site๋Š” ์š”์ฒญ์„ ๋ณด๋‚ธ Origin๊ณผ ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ, ํ”„๋กœํ† ์ฝœ, ํฌํŠธ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ์ด๋‹ค. ์ด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋‹ค๋ฅด๋‹ค๋ฉด Cross-Origin์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. 

- ์„œ๋ฒ„์—์„œ ์ด๋Ÿฌํ•œ ์˜ต์…˜๋“ค์„ ์ง€์ •ํ•œ ๋‹ค์Œ ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์ฟ ํ‚ค๋ฅผ ์ฒ˜์Œ ์ „์†กํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ํ—ค๋”์— Set-Cookie๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๋กœ ์ฟ ํ‚ค๋ฅผ ๋‹ด์•„ ์ „์†กํ•œ๋‹ค. 

- ์ดํ›„ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„์—๊ฒŒ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•ด์•ผ ํ•œ๋‹ค๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ํ—ค๋”์— Cookie๋ผ๋Š” ํ”„๋กœํผํ‹ฐ์— ์ฟ ํ‚ค๋ฅผ ๋‹ด์•„ ์„œ๋ฒ„์— ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•œ๋‹ค. 

 

์ฟ ํ‚ค์—๋Š” ๋…ธ์ถœ๋˜์–ด์„œ๋Š” ์•ˆ๋˜๋Š” ๋ฏผ๊ฐํ•œ ์ •๋ณด๋‚˜ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ๋‹ด์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค!!

 


Session์ด๋ž€

 

- ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ์—ฐ๊ฒฐ์ด ํ™œ์„ฑํ™”๋œ ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค. (์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ์— ์„ฑ๊ณตํ•œ ์ƒํƒœ)

- ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ์— ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค๋ฉด ์„ธ์…˜์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•œ๋‹ค. ์ฟ ํ‚ค์—๋Š” ๊ทธ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ID๋งŒ ์•”ํ˜ธํ™”๋œ ์ƒํƒœ๋กœ ๋ถ€์—ฌํ•œ๋‹ค. 

- ์ค‘์š” ๋ฐ์ดํ„ฐ๋Š” ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌ

 

์„ธ์…˜๋„ ๊ฒฐ๊ตญ์€ ์ฟ ํ‚ค์— ์œ ์ €์˜ ์ •๋ณด๋ฅผ ๋‹ด์•„์ค€๋‹ค. 

 

์„ธ์…˜์˜ ๋‹จ์ 

์„ธ์…˜์€ ์„œ๋ฒ„์˜ ์ €์žฅ๊ณต๊ฐ„์— ์„ธ์…˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. 

๋งŒ์•ฝ ์„œ๋ฒ„์— ์ด์šฉ์ž๊ฐ€ ๋งค์šฐ ๋งŽ์€ ๊ฒฝ์šฐ๋ผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ™์€ ์ €์žฅ๊ณต๊ฐ„์˜ ์ผ์ • ๋ถ€๋ถ„์„ ํ•ญ์ƒ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๊ฒŒ ๋˜๋ฏ€๋กœ ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ์˜ ์–‘์ด ์ค„์–ด๋“ค์–ด์„œ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์ด ์•ˆ์ข‹์•„์ง€๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๋˜ํ•œ ์ฟ ํ‚ค๋ฅผ ์™„์ „ํžˆ ๋Œ€์ฒดํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฟ ํ‚ค๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š”๋ฐ, XSS ๊ณต๊ฒฉ์œผ๋กœ์ธํ•ด ์„ธ์…˜ ์ฟ ํ‚ค๊ฐ€ ํƒˆ์ทจ ๋‹นํ•  ์œ„ํ—˜์„ฑ์ด ์žˆ๋‹ค. 

 

 


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

  ์„ค๋ช… ์ ‘์† ์ƒํƒœ ์ €์žฅ ๊ฒฝ๋กœ ์žฅ์  ๋‹จ์ 
Cookie ์ฟ ํ‚ค๋Š” ๊ทธ์ € http์˜ stateless ํ•œ ๊ฒƒ์„ ๋ณด์™„ํ•ด์ฃผ๋Š” ๋„๊ตฌ ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„์— ๋ถ€๋‹ด์„ ๋œ์–ด์คŒ ์ฟ ํ‚ค ๊ทธ ์ž์ฒด๋Š” ์ธ์ฆ์ด ์•„๋‹˜
Session ์ ‘์† ์ƒํƒœ๋ฅผ ์„œ๋ฒ„๊ฐ€ ๊ฐ€์ง (stateful)
์ ‘์† ์ƒํƒœ์™€ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์œ„ํ•ด ์„ธ์…˜ ์•„์ด๋””๋ฅผ ์ฟ ํ‚ค๋กœ ์ „์†ก
์„œ๋ฒ„ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ €์ธ์ง€ ์„œ๋ฒ„์—์„œ ์ถ”๊ฐ€๋กœ ํ™•์ธ ๊ฐ€๋Šฅ ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ๋งŒ ์ ‘์† ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ๋ถ„์‚ฐ์— ๋ถˆ๋ฆฌ

 

์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ์— ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ •๋ณด๋ฅผ ์ €์žฅํ–ˆ์—ˆ์ง€๋งŒ, ์ฟ ํ‚ค๋Š” ์œ ์ €๊ฐ€ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ  ์œ ํšจ๊ธฐ๊ฐ„๋„ ์ •ํ•ด์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด ์˜์›ํžˆ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ์ธ์ฆ์ •๋ณด๋ฅผ ๋‹ด์•„ ๋ณด๊ด€ํ•˜๊ธฐ์—๋Š” ์ข‹์ง€ ๋ชปํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค. (์ฟ ํ‚ค๋Š” ๊ทธ์ € http์˜ stateless ํ•œ ๊ฒƒ์„ ๋ณด์™„ํ•ด์ฃผ๋Š” ๋„๊ตฌ)

 

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

 

 

๐Ÿ˜ƒ ์ž˜๋ชป๋œ ๊ฐœ๋… ์ „๋‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ €์˜ ์„ฑ์žฅ์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค๐Ÿค“