๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
D.evelop/Web

[WEB] ์›น ์ €์žฅ์†Œ - ์ฟ ํ‚ค/๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€/์„ธ์…˜์Šคํ† ๋ฆฌ์ง€

by Danne 2021. 12. 20.

๐Ÿช Cookie

  • ๋ฐฐ๊ฒฝ
    • http์˜ ํŠน์„ฑ์ธ '๋น„์—ฐ๊ฒฐ์„ฑ', '๋ฌด์ƒํƒœ์„ฑ'์œผ๋กœ ์ธํ•ด, ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ์™„๋ฃŒ๋˜๋ฉด ์—ฐ๊ฒฐ์„ ๋Š์Œ.
      → ํ•œ ์‚ฌ์ดํŠธ์— ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐฉ๋ฌธํ•ด๋„ ์ƒˆ๋กœ ๋ฐฉ๋ฌธํ•œ ๊ฒƒ์ด ๋จ.
      ์ด์— Netscape์‚ฌ์ดํŠธ ๋ฐฉ๋ฌธ์ž๊ฐ€ ์ด๋ฏธ ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ–ˆ๋Š”์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘.
      Unix ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์‚ฌ์šฉํ•˜๋˜ ๋งค์ง์ฟ ํ‚ค(ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜์‹ ํ•œ ๋’ค, ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ ํŒจํ‚ท)์—์„œ ์œ ๋ž˜.
  • ์ตœ๋Œ€ 4KB๊นŒ์ง€ ์ €์žฅ
  • ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” ์šฉ๋„ : ์„œ๋ฒ„ ์š”์ฒญ์„ ํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์‹ค๋ ค์„œ ๋”ฐ๋ผ์˜ด
    • SSR์—์„œ ๋”์šฑ ์ค‘์š”!
      SSR ์‹œ์ ์— localStorage์˜ ๊ฐ’์„ ์•Œ ๋ฐฉ๋ฒ•์ด ์—†์Œ.
      But!! ์ฟ ํ‚ค๋ฐ์ดํ„ฐ๋Š” ์•Œ ์ˆ˜ ์žˆ์Œ.
      → ์„œ๋ฒ„์—์„œ html๋ฅผ ๋ Œ๋”๋ง ํ•  ๋•Œ, ๋”์šฑ ๋งŽ์€ ์ •๋ณด๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์Œ
      → ๋กœ๋”ฉ์‹œ๊ฐ„ ๋‹จ์ถ•
    • HTTP์š”์ฒญ์‹œ Headers์— ์‹ค๋ ค ์ „์†ก๋จ
  • ๋ฐ์ดํ„ฐ ์œ ํšจ๊ธฐ๊ฐ„ ์ง€์ • ๊ฐ€๋Šฅ (ํ•œ ์‹œ๊ฐ„ ๋’ค, ํ•˜๋ฃจ ๋’ค ๋“ฑ)
// ์œ ํšจ ์ผ์ž ์„ค์ •
Set-Cookie: <cookie-name> = <cookie-value>; Expires=<data>

// ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„ ์„ค์ • : Max-Age๊ฐ€ ์กด์žฌํ•˜๋ฉด Expires๋Š” ๋ฌด์‹œ๋จ
Set-Cookie: <cookie-name> = <cookie-value>; Max-Age=<number>
  • ์‚ฌ์šฉ ์˜ˆ: ๋กœ๊ทธ์ธ ์ž๋™์™„์„ฑ, ์˜ค๋Š˜ ํ•˜๋ฃจ ๋ณด์ง€ ์•Š๊ธฐ ๋“ฑ

์ฟ ํ‚ค์˜ ์ข…๋ฅ˜

  • ๋งŒ๋ฃŒ๊ธฐ๊ฐ„ ๋ณ„
    • ์˜๊ตฌ ์ฟ ํ‚ค(Persistent Cookie) : ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„ ์žˆ์Œ. ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„์ด ๋๋‚œ ํ›„ ์‚ญ์ œ.
    • ์„ธ์…˜ ์ฟ ํ‚ค(Session Cookies) : ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„ ์—†์Œ. ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ์‹œ ์‚ญ์ œ.
  • ๋„๋ฉ”์ธ ๋ณ„
    • First party Cookie : ๊ฐ™์€ ๋„๋ฉ”์ธ์—์„œ ์ƒ์„ฑ๋œ ์ฟ ํ‚ค. ์„œ๋ธŒ ๋„๋ฉ”์ธ์˜ ๊ฒฝ์šฐ๋„ ํฌํ•จ
    • Third party Cookie : ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์—์„œ ์ƒ์„ฑ๋œ ์ฟ ํ‚ค. img, font, iframe ๋“ฑ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์— ์š”์ฒญ์„ ํ•ด์•ผํ•  ๊ฒฝ์šฐ ์ƒ์„ฑ.
      • ์ฃผ๋กœ ๊ด‘๊ณ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ. ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ์ •๋ณด ์•…์šฉ์˜ ๋ฌธ์ œ.

  First party Cookie Third party Cookie 
https://kangdanne.tistory.com/ ๊ฐ™์€ ๋„๋ฉ”์ธ
kangdanne.tistory.com/ 

์„œ๋ธŒ ๋„๋ฉ”์ธ
m.kangdanne.tistory.com/
๋‹ค๋ฅธ ๋„๋ฉ”์ธ
facebook.com
  • ๋ฌธ์ œ์ 
    • ๋ณด์•ˆ์  ๋ฌธ์ œ
      • CSRF : ์‚ฌ์šฉ์ž ๊ถŒํ•œ์„ ์ด์šฉํ•œ ๊ณต๊ฒฉ. ์‚ฌ์ดํŠธ์— ๋กœ๊ทธ์ธ ๋˜์–ด ์žˆ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰. (๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ, ๊ฒฐ์ œ ์š”์ฒญ ๋“ฑ)
      • XSS : ์‚ฌ์šฉ์ž์˜ ๋ฏผ๊ฐํ•œ ์ •๋ณด ํƒˆ์ทจ (token)
    • http์š”์ฒญ ์‹œ ์ž๋™์œผ๋กœ ๋ชจ๋“  ์ฟ ํ‚ค๊ฐ€ ์ „์†ก๋˜์–ด ๋ถˆํ•„์š”ํ•œ ํŠธ๋ž˜ํ”ฝ์ด ์ฆ๊ฐ€๋  ์ˆ˜ ์žˆ์Œ.

 

 

๐Ÿ’ฐ Cashe์บ์‹œ

  • ์›น ๋ฟ ์•„๋‹ˆ๋ผ ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ, ์•ˆ๋“œ๋กœ์ด๋“œ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ณณ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…
  • ๊ฐ€์ ธ์˜ค๋Š”๋ฐ ๋น„์šฉ์ด ๋“œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ ๊ฐ€์ ธ์˜จ ๋’ค ์ž„์‹œ๋กœ ์ €์žฅํ•ด ๋‘๋Š” ๊ฒƒ
  • ์›น ์บ์‹œ : ํ•œ ๋ฒˆ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ ๋˜๋Š” ์ค‘๊ฐ„ ์—ญํ• ์„ ํ•˜๋Š” ์„œ๋ฒ„์— ์ €์žฅ

 

๐Ÿ—‚ IndexedDB

  • ๋Œ€์šฉ๋Ÿ‰์œผ๋กœ ์ €์žฅ ๊ฐ€๋Šฅ
  • ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ €์žฅ ๊ฐ€๋Šฅ
  • ์ €์ˆ˜์ค€ API์ œ๊ณต → ์‚ฌ์šฉ๋ฒ•์ด ๊นŒ๋‹ค๋กœ์›€

 

๐Ÿ—„ Web Storage

  • ์ฟ ํ‚ค์˜ ๋ฌธ์ œ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด HTML5์—์„œ ๋“ฑ์žฅ
  • ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ API๋กœ local storage์™€ session storage๊ฐ€ ์žˆ๋‹ค.
  • ์›น ๋ธŒ๋ผ์šฐ์ € ์ž์ฒด์— ์žˆ๋Š” ํŠน์ • ์ €์žฅ ๊ณต๊ฐ„
  • 5MB ~ 10MB์ •๋„๋กœ ์ตœ๋Œ€ ์šฉ๋Ÿ‰.
  • ์ฟ ํ‚ค์™€ ์œ ์‚ฌํžˆ์ง€๋งŒ ํ›จ์”ฌ ์•ˆ์ •์ 
    • ์š”์ฒญ ์‹œ Headers์— ์ „์†กํ•˜์ง€ ์•Š์Œ → CSRF, ํŠธ๋ž˜ํ”ฝ ๋ฌธ์ œ ํ•ด๊ฒฐ
  • Stringํ˜•๋งŒ ์ €์žฅ๋จ 
    • key, value์ €์žฅ์†Œ ์ด์ƒ์˜ ๊ธฐ๋Šฅ์€ ์—†์Œ.
  • Array, Objectํ˜•ํƒœ๋กœ ์ ์šฉํ•˜๊ณ  ์‹ถ์„ ์‹œ, JSON.stringify()๋ฅผ ์‚ฌ์šฉํ•ด ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅ
// Array
let arr = ["a", "b"];
localStorage.setItem("arr", JSON.stringify(arr));

// Object
let obj = {
  a: "์—์ด",
  b: "์‚",
};
localStorage.setItem("obj", JSON.stringify(obj));
console.log(localStorage.getItem("arr"));
// ["a", "b"] <- ๋ฌธ์ž์—ด์ž„


console.log(localStorage.getItem("obj"));
// {"a":"์—์ด","b":"์‚"} <- ๋ฌธ์ž์—ด์ž„

 

  • JSON.stringify()๋ฅผ ํ†ตํ•ด ๋ณ€ํ™˜ ๋ฐ›์€ String ๊ฐ’์„ ๋‹ค์‹œ Array๋‚˜ Object๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ JSON.parse()์‚ฌ์šฉ
 console.log(JSON.parse(localStorage.getItem("arr")));
 console.log(JSON.parse(localStorage.getItem("obj")));

 

  • ๋ฒ„์ „์— ๋”ฐ๋ผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฏธ์ง€์›ํ•  ์ˆ˜ ์žˆ์Œ. ์—๋Ÿฌ ์ฒ˜๋ฆฌ ํ•„์ˆ˜!
    • ex) safari ์‹œํฌ๋ฆฟ ๋ชจ๋“œ์—์„œ ์›น ์Šคํ† ๋ฆฌ์ง€ ์‚ฌ์šฉ ์‹œ ์—๋Ÿฌ
 // ๋ธŒ๋ผ์šฐ์ €๊ฐ€ storage๋ฅผ ์ง€์›ํ•˜๋Š” ์ง€ ์ฒดํฌํ•˜๋Š” ๋ฐฉ๋ฒ•
 if (typeof Storage !== "undefined") {

}
  • ๋ฌธ์ œ์ 
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ ‘๊ทผ๊ฐ€๋Šฅ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— XSS์— ์ทจ์•ฝ. 
    • ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„ ์„ค์ • ๋ถˆ๊ฐ€
    • ๋™๊ธฐ์ ์ธ ์‹คํ–‰ : ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ๋ธ”๋กœํ‚น. ์šฉ๋Ÿ‰์ด ํฐ ๊ฒฝ์šฐ InedexdDB ๊ณ ๋ ค.

 

Local Storage (๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€)

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

์˜ˆ์‹œ)

"'์ธ๊ธฐ์ˆœ'์ •๋ ฌ์„ ์กฐ๊ฑด์œผ๋กœ ๊ฑด ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ > ์ƒํ’ˆ ์ƒ์„ธํŽ˜์ด์ง€ > ๋‹ค์‹œ ์ƒํ’ˆ๋ฆฌ์ŠคํŠธ"๊ฐ™์€ ํ๋ฆ„
๐Ÿ‘ GOOD : "'์ธ๊ธฐ์ˆœ'์กฐํšŒ ์กฐ๊ฑด์ด ๊ฑธ๋ ค์žˆ๋Š” ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ"๋กœ ๋„˜์–ด๊ฐ€๋Š”์•ผํ•œ๋‹ค.
๐Ÿ‘Ž BAD : "์กฐํšŒ์กฐ๊ฑด ์ •๋ณด๊ฐ€ ๋‹ค ์‚ฌ๋ผ์ง„ ๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€"๊ฐ€ ๋œฌ๋‹ค๋ฉด ์‚ฌ์šฉ์ž๋Š” ๋ถˆํŽธํ•จ์„ ๋Š๋‚„ ๊ฒƒ.

์‚ฌ์šฉ์ž์˜ ์กฐํšŒ ์กฐ๊ฑด๋“ค์„ parameter๋กœ ํŽ˜์ด์ง€๊ฐ€ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ๋“ค๊ณ ๋‹ค๋‹ˆ๊ฒŒ ๊ตฌํ˜„ํ•œ๋‹ค? → ๋ถˆํŽธํ•จ๐Ÿ˜ซ

๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€๋กœ ์ €์žฅํ•˜๋ฉด ํŽ˜์ด์ง€ ์ด๋™๋งˆ๋‹ค ๋“ค๊ณ ๋‹ค๋‹ ํ•„์š”์—†์ด

localStorage.setItem("key", "value");
localStorage.getItem("key");

 

์„ ์ด์šฉํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•œ ํ›„์—๋„ ํ•ด๋‹น ๋ธŒ๋ผ์šฐ์ €, ํ•ด๋‹น ๋„๋งค์ธ์œผ๋กœ ์ ‘์†ํ•  ๋•Œ ๊ทธ ์ •๋ณด๊ฐ€ ๋‚จ์•„์žˆ๊ฒŒ ๋œ๋‹ค.

๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์˜ ์ •๋ณด๋ฅผ deletํ•ด์ฃผ์ง€ ์•Š๋Š” ํ•œ ์žฌ์ ‘์† ์‹œ์—๋„ "'์ธ๊ธฐ์ˆœ'์กฐํšŒ ์กฐ๊ฑด์ด ๊ฑธ๋ ค์žˆ๋Š” ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ"๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ๋œจ๊ฒŒ๋œ๋‹ค.

 

โœ… API ์‚ฌ์šฉ๋ฐฉ๋ฒ•

localStorage.setItem("key", "value");
localStorage.getItem("key");
localStorage.removeItem("key");
clear()

 

Session Storage (์„ธ์…˜์Šคํ† ๋ฆฌ์ง€)

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

 

โœ… API ์‚ฌ์šฉ๋ฐฉ๋ฒ•

sessionStorage.setItem("key", "value");
sessionStorage.getItem("key");
sessionStorage.removeItem("key");
clear()

 

โœ”๏ธ ์š”์•ฝ

  ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€
์ €์žฅ ๋ฒ”์œ„ ๋„๋ฉ”์ธ, ๋ธŒ๋ผ์šฐ์ € ๋„๋ฉ”์ธ, ๋ธŒ๋ผ์šฐ์ €, ํƒญ
์˜๊ตฌ์  ์ €์žฅ Yes
(Delet๊ฐ€ ๋˜์ง€ ์•Š๋Š” ํ•œ ์กด์žฌ)
No
(๋ธŒ๋ผ์šฐ์ €, ํƒญ์„ ๋‹ซ์„ ์‹œ ์ œ๊ฑฐ๋จ)
์‚ฌ์šฉ ์˜ˆ ์ž๋™ ๋กœ๊ทธ์ธ ์ผํšŒ์„ฑ ์กฐํšŒ
์ฃผ์˜ password, ๊ฐœ์ธ ์ •๋ณด๋Š” ์ค‘์š”ํ•œ ์ •๋ณด๋Š” ์ €์žฅํ•˜๋ฉด ์•ˆ๋จ.

 

 

 

 

๊ณตํ†ต ๋ณด์•ˆ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

  ํ•ด๊ฒฐ ๋ฐฉ์•ˆ  
XSS HttpOnly ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ ‘๊ทผ ๋ถˆ๊ฐ€
innerHTML ์‚ฌ์šฉ X ์ž๋ฐ”ํฌ๋ฆฝํŠธ ์ฝ”๋“œ ์‚ฝ์ž… ๋ถˆ๊ฐ€
์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์—†์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ์‹คํ–‰ ๋  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ธฐ
(innerHTML, eval, document.write ๋“ฑ)
CSRF SameSite ๊ฐ™์€ ๋„๋ฉ”์ธ์˜ ์š”์ฒญ์—๋งŒ ์ฟ ํ‚ค ์ „์†ก
Referer ์š”์ฒญ ์˜จ ์‚ฌ์ดํŠธ์˜ ๋„๋ฉ”์ธ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Œ

 

 

 

 

์ฐธ๊ณ  ์ž๋ฃŒ

์œ ํŠœ๋ธŒ
'๊ฐœ๋ฐœ์ž์˜ ํ’ˆ๊ฒฉ' - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ดˆ-localStorage์™€ sessionStorage ์ดํ•ดํ•˜๊ธฐ

'Teahoon' - ์›นํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์•Œ์•„์•ผ ํ•  ์ €์žฅ์†Œ ์ข…๋ฅ˜ 4๊ฐ€์ง€

'์šฐ์•„ํ•œTech' - [10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๐Ÿฆ„ ๋””ํ† ์˜ ์›น์Šคํ† ๋ฆฌ์ง€ & ์ฟ ํ‚ค

๋ธ”๋กœ๊ทธ '๋กœํ‹ฐ ๋„ˆ๊ตฌ๋ฆฌ_๋กœํ‹ฐ' - ์ฟ ํ‚ค์™€ ์„ธ์…˜ ๊ทธ๋ฆฌ๊ณ  ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์™€ ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€