Back End Cookie & HttpSession - swkim0128/PARA GitHub Wiki


type: Spring archive: false

Session & Cookie


http protocol์˜ ํŠน์ง•

client๊ฐ€ server์— ์š”์ฒญ.

server๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ํ›„ clinet์— ์‘๋‹ต.

์‘๋‹ต ํ›„ ์—ฐ๊ฒฐ์„ ํ•ด์ œ >> stateless

  • ์ง€์†์ ์ธ ์—ฐ๊ฒฐ๋กœ ์ธํ•œ ์ž์› ๋‚ญ๋น„๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•œ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ clinet์™€ server๊ฐ€ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ(๋กœ๊ทธ์ธ์ •๋ณด๋“ฑ)
  • ์ฆ‰ client ๋‹จ์œ„๋กœ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ Cookie์™€ Session์ด ์‚ฌ์šฉ๋œ๋‹ค.

HTTP protocol์˜ ํŠน์ง•(์•ฝ์ )์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

Cookie


Cookie? : javax.servlet.http.Cookie

  • ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ์— ์ €์žฅํ•˜๋Š” ์ •๋ณดํŒŒ์ผ.
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ณ„๋„์˜ ์š”์ฒญ์„ํ•˜์ง€ ์•Š์•„๋„ ๋ธŒ๋ผ์šฐ์ €๋Š” request์‹œ request Header๋ฅผ ๋„ฃ์–ด ์ž๋™์œผ๋กœ ์„œ๋ฒ„์— ์ „์†ก
  • key์™€ value๋กœ ๊ตฌ์„ฑ๋˜๊ณ  String ํ˜•ํƒœ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Œ.
  • Browser๋งˆ๋‹ค ์ €์žฅ๋˜๋Š” ์ฟ ํ‚ค๋Š” ๋‹ค๋ฅด๋‹ค(์„œ๋ฒ„์—์„œ๋Š” Browser๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋กœ ์ธ์‹)

Cookie์˜ ์‚ฌ์šฉ ๋ชฉ์ 

  • ์„ธ์…˜ ๊ด€๋ฆฌ : ์‚ฌ์šฉ์ž ์•„์ด๋””, ์ ‘์†์‹œ๊ฐ„, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋“ฑ์˜ ์„œ๋ฒ„๊ฐ€ ์•Œ์•„์•ผ ํ•  ์ •๋ณด ์ €์žฅ.
  • ๊ฐœ์ธํ™” : ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ ๊ทธ ์‚ฌ๋žŒ์— ์ ์ ˆํ•œ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • ํŠธ๋ž˜ํ‚น : ์‚ฌ์šฉ์ž์˜ ํ–‰๋™๊ณผ ํŒจํ„ด์„ ๋ถ„์„ํ•˜๊ณ  ๊ธฐ๋ก

Cookie์˜ ์‚ฌ์šฉ ์˜ˆ.

  • id ์ €์žฅ(์ž๋™ ๋กœ๊ทธ์ธ).
  • ์ผ์ฃผ์ผ๊ฐ„ ๋‹ค์‹œ ๋ณด์ง€ ์•Š๊ธฐ.
  • ์ตœ๊ทผ ๊ฒ€์ƒ‰ํ•œ ์ƒํ’ˆ๋“ค์„ ๊ด‘๊ณ ์— ์ถ”์ฒœ.
  • ์‡ผํ•‘๋ชฐ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ.

Cookie์˜ ๊ตฌ์„ฑ์š”์†Œ.

  • ์ด๋ฆ„ : ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฟ ํ‚ค๊ฐ€ client์˜ ์ปดํ“จํ„ฐ์— ์ €์žฅ๋˜๋ฏ€๋กœ ๊ฐ ์ฟ ํ‚ค๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฆ„
  • ๊ฐ’ : ํฌํ‚ค์˜ ์ด๋ฆ„๊ณผ ๋งคํ•‘๋˜๋Š” ๊ฐ’
  • ์œ ํšจ๊ธฐ๊ฐ„ : ์ฟ ํ‚ค์˜ ์œ ํšจ๊ธฐ๊ฐ„
  • ๋„๋ฉ”์ธ : ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•  ๋„๋ฉ”์ธ
  • ๊ฒฝ๋กœ(path) : ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•  ์š”์ฒญ ๊ฒฝ๋กœ

Cookie์˜ ๋™์ž‘ ์ˆœ์„œ

  • Client๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญ.
  • WAS๋Š” Cookie๋ฅผ ์ƒ์„ฑ
  • HTTP Header์— Cookie๋ฅผ ๋„ฃ์–ด ์‘๋‹ต
  • Browser๋Š” ๋„˜๊ฒจ๋ฐ›์€ Cookie๋ฅผ PC์— ์ €์žฅํ•˜๊ณ , ๋‹ค์‹œ WAS๊ฐ€ ์š”์ฒญํ•  ๋•Œ ์š”์ฒญ๊ณผ ํ•จ๊ป˜ Cookie๋ฅผ ์ „์†ก
  • Browser๊ฐ€ ์ข…๋ฃŒ๋˜์–ด๋„ Cookie์˜ ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„์ด ๋‚จ์•„ ์žˆ๋‹ค๋ฉด Client๋Š” ๊ณ„์† ๋ณด๊ด€
  • ๋™์ผ ์‚ฌ์ดํŠธ ์žฌ๋ฐฉ๋ฌธ์‹œ Client์˜ PC์— ํ•ด๋‹น Cookie๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ์š”์ฒญ ํŽ˜์ด์ง€์™€ ํ•จ๊ป˜ Cookie๋ฅผ ์ „์†ก.

Cookie์˜ ํŠน์ง•

  • ์ด๋ฆ„, ๊ฐ’, ๋งŒ๋ฃŒ์ผ(์ €์žฅ ๊ธฐ๊ฐ„ ์„ค์ •), ๊ฒฝ๋กœ ์ •๋ณด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ์— ์ด 300๊ฐœ์˜ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ ๋‹น 20๊ฐœ์˜ ์ฟ ํ‚ค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ์ฟ ํ‚ค๋Š” 4KB๊นŒ์ง€ ์ €์žฅ ๊ฐ€๋Šฅํ•˜๋‹ค.

Cookie์˜ ์„ค์ •.

  • name์ด userid์ธ Cookie์˜ ๊ฐ’์€ ssafy์ด๊ณ , ์œ ํšจ๊ธฐ๊ฐ„์€ 2020๋…„ 10์›” 15์ผ์ด๋‹ค.
  • ์œ ํšจ๋„๋ฉ”์ธ ๋ฐ ๊ฒฝ๋กœ๋Š” ssafy.com Domain์˜ /user Path๊ฐ€ ๋œ๋‹ค.

!Untitled 59.png

Cookie์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

!Untitled 1 36.png

Session


session? : javax.servlet.http.HttpSession

  • ๋ฐฉ๋ฌธ์ž๊ฐ€ ์›น ์„œ๋ฒ„์— ์ ‘์†ํ•ด ์žˆ๋Š” ์ƒํƒœ๋ฅผ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ๋ณด๊ณ  ๊ทธ๊ฒƒ์„ ์„ธ์…˜์ด๋ผ ํ•œ๋‹ค.
  • WAS์˜ memory์— Object์˜ ํ˜•ํƒœ๋กœ ์ €์žฅ.
  • memory๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ์šฉ๋Ÿ‰๊นŒ์ง€ ์ œํ•œ ์—†์ด ์ €์žฅ ๊ฐ€๋Šฅ.

session์˜ ์‚ฌ์šฉ ์˜ˆ

  • site๋‚ด์—์„œ ํ™”๋ฉด์„ ์ด๋™ํ•ด๋„ ๋กœ๊ทธ์ด(์‚ฌ์šฉ์ž ์ •๋ณด)์ด ํ’€๋ฆฌ์ง€ ์•Š๊ณ  ์œ ์ง€
  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ

session์˜ ๋™์ž‘ ์ˆœ์„œ

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญ.
  • ์„œ๋ฒ„๋Š” ์ ‘๊ทผํ•œ ํด๋ผ์ด์–ธํŠธ์˜ Request-Header ํ•„๋“œ์ธ Cookie๋ฅผ ํ™•์ธํ•˜์—ฌ, ํด๋ผ๋ฆฌ์–ธํŠธ๊ฐ€ ํ•ด๋‹น session-id๋ฅผ ๋ณด๋ƒˆ๋Š”์ง€ ํ™•์ธ.
  • session-id๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์„œ๋ฒ„๋Š” session-id๋ฅผ ์ƒ์„ฑํ•ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋Œ๋ ค์ค€๋‹ค.
  • ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋Œ๋ ค์ค€ session-id๋ฅผ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„์— ์ €์žฅ. ์ฟ ํ‚ค ์ด๋ฆ„ : JSESSIONID
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์žฌ ์ ‘์† ์‹œ, ์ด ์ฟ ํ‚ค(JSESSIONID)๋ฅผ ์ด์šฉํ•˜์—ฌ session-id ๊ฐ’์„ ์„œ๋ฒ„์— ์ „๋‹ฌ.

session์˜ ํŠน์ง•.

  • ์›น ์„œ๋ฒ„์— ์›น ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅ.
  • ์›น ์„œ๋ฒ„์— ์ €์žฅ๋˜๋Š” ์ฟ ํ‚ค(=์„ธ์…˜ ์ฟ ํ‚ค)
  • ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ๊ฑฐ๋‚˜, ์„œ๋ฒ„์—์„œ ์„ธ์…˜์„ ์‚ญ์ œ ํ–ˆ์„ ๋•Œ๋งŒ ์‚ญ์ œ๊ฐ€ ๋˜๋ฏ€๋กœ, ์ฟ ํ‚ค๋ณด๋‹ค ๋น„๊ต์  ๋ณด์•ˆ์ด ์ข‹๋‹ค.
  • ์ €์žฅ ๋ฐ์ดํ„ฐ์— ์ œํ•œ์ด ์—†๋‹ค.
  • ๊ฐ ํด๋ผ์ด์–ธํŠธ ๊ณ ์œ  Session ID๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค.
  • Session ID๋กœ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ฐ ํด๋ผ์ด์–ธํŠธ ์š”๊ตฌ์— ๋งž๋Š” ์„œ๋น„์Šค ์ œ๊ณต.

session์˜ ์„ค์ •

  • Browser๋‹น ํ•˜๋‚˜์˜ JSESSIONID๋ฅผ ํ• ๋‹น ๋ฐ›์Œ.
  • ์•„์ด๋”” ๋˜๋Š” ๋‹‰๋„ค์ž„๊ณผ ๊ฐ™์ด ๋กœ๊ทธ์ธ ํ–ˆ์„ ๊ฒฝ์šฐ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ •๋ณด๋ฅผ session์— ์ €์žฅํ•˜๋ฉด DB๋ฅผ ์ ‘๊ทผํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ํšจ์œจ์ ์ด๋‹ค.

!Untitled 2 35.png

HttpSession์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

!Untitled 3 34.png

Session & Cookie ์ •๋ฆฌ


!Untitled 4 30.png

โš ๏ธ **GitHub.com Fallback** โš ๏ธ