[C/F TIL] 56~58์ผ์ฐจ - Cookie/ Session

mu-engยท2023๋…„ 7์›” 3์ผ
1

TIL (in boost camp)

๋ชฉ๋ก ๋ณด๊ธฐ
51/53
post-thumbnail

Code States
Front-end boost camp
Today
I
Learned

๐Ÿฅ— ๋ง‘๊ณ  ๋ฅ๋Œœ์ž‰ 56~57์ผ์ฐจ ๋ฐฑ์—”๋“œ ใ… ...


  • ์ฟ ํ‚ค : ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ ์˜์†์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๋‹จ์ˆœํžˆ ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ์— ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒƒ๋งŒ ์˜๋ฏธํ•˜์ง€ ์•Š๊ณ  ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ์ฟ ํ‚ค๋ฅผ ๋‹ค์‹œ ์ „์†กํ•˜๋Š” ๊ฒƒ๋„ ํฌํ•จ
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ ์ดํ›„ ์•„๋ฌด ๋•Œ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋Š” ์—†์Œ
    -- ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ ์ดํ›„ ํŠน์ • ์กฐ๊ฑด๋“ค์ด ๋งŒ์กฑ๋˜์–ด์•ผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ

โœ”๏ธ ์ฟ ํ‚ค ์˜ต์…˜ ์ข…๋ฅ˜

  • Domain : ์„œ๋ฒ„์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„(ex. www.google.com)
  • Path : ์„ธ๋ถ€ ๊ฒฝ๋กœ๋กœ์จ ์„œ๋ฒ„๊ฐ€ ๋ผ์šฐํŒ…ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ๋กœ
  • MaxAge or Expires : ์ฟ ํ‚ค๊ฐ€ ์œ ํšจํ•œ ๊ธฐ๊ฐ„์„ ์ •ํ•˜๋Š” ์˜ต์…˜
  • Secure : ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ฅธ ์ฟ ํ‚ค์˜ ์ „์†ก ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์˜ต์…˜, ๋„๋ฉ”์ธ์ด localhost์ธ ๊ฒฝ์šฐ HTTPS๊ฐ€ ์•„๋‹ˆ์–ด๋„ ์ฟ ํ‚ค ์ „์†ก ๊ฐ€๋Šฅ
  • HttpOnly : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ธŒ๋ผ์šฐ์ €์˜ ์ฟ ํ‚ค์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ์ง€ ์—ฌ๋ถ€ ๊ฒฐ์ •, ํ•ด๋‹น ์˜ต์…˜์ด true๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ฟ ํ‚ค๊ฒŒ ์ ‘๊ทผ ๋ถˆ๊ฐ€
  • SameSite : Cross-Site ์š”์ฒญ์„ ๋ฐ›์€ ๊ฒฝ์šฐ, ์š”์ฒญ์—์„œ ์‚ฌ์šฉํ•œ ๋ฉ”์„œ๋“œ์™€ ํ•ด๋‹น ์˜ต์…˜์˜ ์กฐํ•ฉ์„ ๊ธฐ์ค€์œผ๋กœ ์„œ๋ฒ„์˜ ์ฟ ๊ธฐ ์ „์†ก ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋จ. ์ด๋•Œ, Cross-Origin๊ณผ Cross-Site๋ฅผ ํ˜ผ๋™ํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜
    -- Cross-Origin : ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ, ํ”„๋กœํ† ์ฝœ, ํฌํŠธ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋‹ค๋ฅธ ๊ฒฝ์šฐ Cross-Origin์œผ๋กœ ๊ตฌ๋ถ„๋จ
    -- Cross-Site : eTLD+1์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ Cross-Site๋กœ ๊ตฌ๋ถ„
    -- SameSite ์˜ต์…˜ : Lax - ์‚ฌ์ดํŠธ๊ฐ€ ์„œ๋กœ ๋‹ฌ๋ผ๋„, GET ์š”์ฒญ์ด๋ผ๋ฉด ์ฟ ํ‚ค ์ „์†ก์ด ๊ฐ€๋Šฅ/ Strict - ์‚ฌ์ดํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋ฉด, ์ฟ ํ‚ค ์ „์†ก ๋ถˆ๊ฐ€/ None - ์‚ฌ์ดํŠธ๊ฐ€ ๋‹ฌ๋ผ๋„, ๋ชจ๋“ (GET, POST, PUT ๋“ฑ๋“ฑ) ์š”์ฒญ์— ๋Œ€ํ•ด ์ฟ ํ‚ค ์ „์†ก ๊ฐ€๋Šฅ

  • ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•œ ์ƒํƒœ ์œ ์ง€ : ์ฟ ํ‚ค์˜ ํŠน์„ฑ์„ ์ด์šฉํ•ด ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์— ์ธ์ฆ์ •๋ณด๋ฅผ ๋‹ด์€ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญ๊ณผ ํ•จ๊ป˜ ์ „์†กํ•˜์—ฌ Statelessํ•œ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์„ Statefulํ•˜๊ฒŒ ์œ ์ง€ ๊ฐ€๋Šฅ
    -- ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฟ ํ‚ค๋Š” ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ์œ ์ง€๋  ์ˆ˜ ์žˆ๊ณ  HttpOnly ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ์ฟ ํ‚ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฟ ํ‚ค์— ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•จ

๐Ÿฅ— Session

โœ”๏ธ ์„ธ์…˜๊ธฐ๋ฐ˜ ์ธ์ฆ

  • ๋กœ๊ทธ์ธ

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

  • ๋กœ๊ทธ์•„์›ƒ
    -- ์„œ๋ฒ„ : ์„ธ์…˜ ์ •๋ณด๋ฅผ ์‚ญ์ œ
    -- ํด๋ผ์ด์–ธํŠธ : ์ฟ ํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•ด์•ผ ํ•จ

  • express-session
    -- Node.js๊ฐ€ ์ด๋Ÿฐ ์„ธ์…˜์„ ๋Œ€์‹  ๊ด€๋ฆฌํ•ด์ฃผ๋Š” express-session์ด๋ผ๋Š” ๋ชจ๋“ˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ

๐Ÿฅ— Hashing

  • ํ•ด์‹ฑ : ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹ ์ค‘์— ํ•˜๋‚˜
  • ํ•ด์‹ฑ์€ ๋ณตํ˜ธํ™” ๋ถˆ๊ฐ€, ์•”ํ˜ธํ™”๋งŒ ๊ฐ€๋Šฅ
  • ํ•จ์ˆ˜(Hash Function)์„ ์‚ฌ์šฉํ•ด ์•”ํ˜ธํ™” ์ง„ํ–‰
  • ํ•ด์‹ฑ์˜ ํŠน์ง•
    -- 1. ํ•ญ์ƒ ๊ฐ™์€ ๊ธธ์ด์˜ ๋ฌธ์ž์—ด ๋ฆฌํ„ด
    -- 2. ์„œ๋กœ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด์— ๋™์ผํ•œ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ˜๋“œ์‹œ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ด
    -- 3. ๋™์ผํ•œ ๋ฌธ์ž์—ด์— ๋™์ผํ•œ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ญ์ƒ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ด
  • ๋ ˆ์ธ๋ณด์šฐ ํ…Œ์ด๋ธ” : ํ•ญ์ƒ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜จ๋‹ค๋Š” ํŠน์„ฑ์„ ์ด์šฉํ•ด ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ๊ฑฐ์น˜๊ธฐ ์ด์ „์˜ ๊ฐ’์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋กํ•ด ๋†“์€ ํ…Œ์ด๋ธ”
    -- ๋ณด์•ˆ์ƒ ์œ„ํ˜‘์ด ๋  ์ˆ˜๋„... ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด? ์†”ํŠธ ํ™œ์šฉ
  • ์†”ํŠธ : ์†Œ๊ธˆ์„ ์น˜๋“ฏ ํ•ด์‹ฑ ์ด์ „ ๊ฐ’์— ์ž„์˜์˜ ๊ฐ’์„ ๋”ํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ถœ๋˜๋”๋ผ๋„ ํ•ด์‹ฑ ์ด์ „์˜ ๊ฐ’์„ ์•Œ์•„๋‚ด๊ธฐ ๋”์šฑ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๋ฐฉ๋ฒ•
  • ํ•ด์‹ฑ์˜ ๋ชฉ์  : ๋ฐ์ดํ„ฐ ๊ทธ ์ž์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋™์ผํ•œ ๊ฐ’์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋งŒ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๊ธฐ ๋•Œ๋ฌธ
  • ์„œ๋ฒ„ ์ธก์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์—์„œ๋„ ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค!
    -- ํ•ด์‹ฑํ•œ ๊ฐ’๋ผ๋ฆฌ ๋น„๊ตํ•ด์„œ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋จ!!

ํ•ด์‹ฑ์€ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋ฐ์ดํ„ฐ ์œ ์ถœ์˜ ์œ„ํ—˜์„ฑ์€ ์ค„์ด๋ฉด์„œ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™” ๋ฐฉ์‹์ด๋‹ค!

profile
[๋ฌด์—ฅ์ผ๊ธฐ] ๋ฌด์—ฅ,,, ๋‚ด๊ฐ€ ๋จธ์จ์ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋  ์ˆ˜ ์ด์“ฐ๊นŒ,,,

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