Hello Kitty Eyes Shut
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป๊ณต๋ถ€ ๊ธฐ๋ก/๐Ÿ“Œ Frontend

[Frontend] sessionStorage

๋ฐ˜์‘ํ˜•

 

 

 

๐Ÿ“ฆ sessionStorage

sessionStorage๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ œ๊ณตํ•˜๋Š” Web Storage API ์ค‘ ํ•˜๋‚˜๋กœ,
๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜ ์‹œ๊ฐ„ ๋™์•ˆ์—๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก ์ €์žฅ์†Œ์ด๋‹ค.

 


๐Ÿงฉ ๊ฐœ๋… ์ •๋ฆฌ

โœ”๏ธ ์ •์˜

sessionStorage๋Š” ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•ด๋„ ์œ ์ง€๋˜์ง€๋งŒ,

ํƒญ์„ ๋‹ซ๊ฑฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•˜๋ฉด ์ž๋™์œผ๋กœ ์‚ญ์ œ๋˜๋Š” ์ž„์‹œ ์ €์žฅ์†Œ์ด๋‹ค.

 


๐Ÿƒ๐Ÿป‍โ™‚๏ธ ๋™์ž‘ ์›๋ฆฌ

1๏ธโƒฃ ์ €์žฅ ๊ตฌ์กฐ

sessionStorage๋Š” ๋„๋ฉ”์ธ ๋‹จ์œ„ + ํƒญ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌ๋œ๋‹ค.

์ฆ‰, ๊ฐ™์€ ๋„๋ฉ”์ธ์ด๋ผ๋„ ์ƒˆ ํƒญ์ด๋‚˜ ์ƒˆ ์ฐฝ์—์„œ๋Š” ์™„์ „ํžˆ ๋ณ„๊ฐœ์˜ sessionStorage ๊ณต๊ฐ„์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

[Chrome ํƒญ A] -> sessionStorage A
[Chrome ํƒญ B] -> sessionStorage B
[Firefox ํƒญ] -> sessionStorage C

 

2๏ธโƒฃ ๋ฐ์ดํ„ฐ ์ €์žฅ๊ณผ ์ฝ๊ธฐ

// ์ €์žฅ
sessionStorage.setItem("username", "soyeon");

// ์กฐํšŒ
const user = sessionStorage.getItem("username");

// ์‚ญ์ œ
sessionStorage.removeItem("username");

// ์ „์ฒด ๋น„์šฐ๊ธฐ
sessionStorage.clear();

 

3๏ธโƒฃ ์ˆ˜๋ช… (lifecycle)

sessionStorage๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›นํŽ˜์ด์ง€๋ฅผ ์—ด๊ณ  ์žˆ๋Š” ๋ธŒ๋ผ์šฐ์ € ํƒญ์ด ์‚ด์•„์žˆ๋Š” ๋™์•ˆ๋งŒ ์œ ์ง€๋œ๋‹ค.

๋˜ํ•œ, ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๊ฑฐ๋‚˜ ๋ผ์šฐํŒ… ์ด๋™์„ ํ•˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋Š” ์œ ์ง€๋œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ•ด๋‹น ํƒญ์„ ๋‹ซ๊ฑฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์™„์ „ํžˆ ์ข…๋ฃŒํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋œ๋‹ค.

 

4๏ธโƒฃ ์‚ฌ์šฉ ๋ชฉ์ 

sessionStorage๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์šฉ๋„์— ์ ํ•ฉํ•˜๋‹ค.

  • ๋ฏผ๊ฐํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ๋งŒ ์œ ์ง€ํ•ด์•ผ ํ•  ์ƒํƒœ ์ •๋ณด ์ €์žฅ
  • ํผ ์ž…๋ ฅ๊ฐ’ ์ž„์‹œ ์ €์žฅ (ํƒญ ๋‹ซ๊ธฐ ์ „๊นŒ์ง€ ๋ณต์›)
  • ํŠน์ • ํŽ˜์ด์ง€ ์ด๋™ ๊ฐ„ ์ž„์‹œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
  • SPA (Single-Page Application)์—์„œ ๋น„๊ณต๊ฐœ ์ •๋ณด ๊ด€๋ฆฌ (ex. ๋น„ํšŒ์› ์ž‘์„ฑ ์ค‘์ธ ๊ฒŒ์‹œ๊ธ€ ๋ฐ์ดํ„ฐ)

 


๐Ÿ” ๋ณด์•ˆ์  ์ธก๋ฉด

sessionStorage๋Š” JavaScript์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์„œ๋ฒ„์—๋Š” ์ž๋™ ์ „์†ก๋˜์ง€ ์•Š๋Š”๋‹ค.

๋”ฐ๋ผ์„œ ์ฟ ํ‚ค์ฒ˜๋Ÿผ CSRF ์œ„ํ—˜์€ ์—†์ง€๋งŒ, XSS ๊ณต๊ฒฉ์—๋Š” localStorage์™€ ๋™์ผํ•˜๊ฒŒ ์ทจ์•ฝํ•˜๋‹ค.

 


๐Ÿ“‘ ์š”์•ฝ ์ •๋ฆฌ

ํ•ญ๋ชฉ sessionStorage
์ €์žฅ ์œ„์น˜ ํด๋ผ์ด์–ธํŠธ ๋ธŒ๋ผ์šฐ์ € (ํƒญ ๋ณ„)
์ˆ˜๋ช… ๋ธŒ๋ผ์šฐ์ € ํƒญ์„ ๋‹ซ์„ ๋•Œ๊นŒ์ง€
ํฌ๊ธฐ ์ œํ•œ ์•ฝ 5MB (๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์ƒ์ด)
์ ‘๊ทผ JavaScript๋กœ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
์„œ๋ฒ„ ์ž๋™ ์ „์†ก โŒ ์•ˆ ๋จ
๋ณด์•ˆ XSS์— ์ทจ์•ฝ, CSRF์—” ์•ˆ์ „
์‚ฌ์šฉ ์šฉ๋„ ์ž„์‹œ ์ €์žฅ๊ฐ’, ์„ธ์…˜ ์ƒํƒœ, ํผ ์ž…๋ ฅ๊ฐ’

๐Ÿ“š  ๊ฒฐ๋ก 

  • sessionStorage๋Š” ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜(ํƒญ)์ด ์œ ์ง€๋˜๋Š” ๋™์•ˆ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ž„์‹œ ์ €์žฅ์†Œ์ด๋‹ค.
  • ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจ ํ•˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋Š” ์œ ์ง€๋˜์ง€๋งŒ, ํƒญ์„ ๋‹ซ๊ฑฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•˜๋ฉด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ ์‚ฌ๋ผ์ง„๋‹ค.
  • ํ•˜์ง€๋งŒ sessionStorage๋Š” JavaScript์—์„œ ์ž์œ ๋กญ๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์ƒ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
  • ๊ฒฐ๋ก ์ ์œผ๋กœ sessionStorage๋Š” ์งง๊ณ  ๊ฐ€๋ฒผ์šด ์ž„์‹œ ์ €์žฅ์— ์ตœ์ ํ™”๋œ ๋„๊ตฌ์ด๋ฉฐ, ๋ณด์•ˆ์ด ํ•„์š”ํ•œ ์ธ์ฆ ์ •๋ณด๋‚˜ ์žฅ๊ธฐ ์ƒํƒœ ๋ณด๊ด€ ์šฉ๋„๋กœ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.
๋ฐ˜์‘ํ˜•