๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Daily/Today I Learned

22.07.14_TIL

by ํ˜ธ๋ฐ€์ด 2022. 7. 14.

๐Ÿ“Œ ์˜ค๋Š˜๋ถ€ํ„ฐ 3์ผ๊ฐ„ ๋กœ๊ทธ์ธ๊ด€๋ จ ๋‚ด์šฉ์„ ํ•™์Šต์„ ํ•˜๊ฒŒ๋œ๋‹ค. ์ฟ ํ‚ค... ํ† ํฐ... ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ด€๋ จ์ด๋‹ค... ์ด๋ถ€๋ถ„์€ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ด์‹ฌํžˆํ•ด๋ณด์ž!!!

๐Ÿ“— ์˜ค๋Š˜ ํ•™์Šตํ•œ ๋‚ด์šฉ

HTTPS ํ”„๋กœํ† ์ฝœ

  • HTTP + Secure
  • ์š”์ฒญ์˜ ๋‚ด์šฉ์„ ํ•œ๋ฒˆ ์•”ํ˜ธํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ถœ์ด ๋˜์–ด๋„ ์–ด๋–ค ๋‚ด์šฉ์ธ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค.
  • ์ธ์ฆ์„œ, CA, ๋น„๋Œ€์นญ ํ‚ค ์•”ํ˜ธํ™”๋ฐฉ์‹์„ ์ด์šฉํ•œ๋‹ค.
  • ์ธ์ฆ์„œ
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„๊ฐ€ ์ง„์งœ์ธ์ง€ ์ธ์ฆํ™•์ธํ•˜๋Š” ์šฉ๋„์ด๋‹ค.
    • ์ธ์ฆ์„œ์˜ ๋‚ด์šฉ์— ์„œ๋ฒ„์— ๋„๋ฉ”์ธ ๊ด€๋ จ ์ •๋ณด๊ฐ€ ์žˆ์–ด์„œ ๋ฐ์ดํ„ฐ ์ œ๊ณต์ž์˜ ์ธ์ฆ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•œ๋‹ค.
    • ์š”์ฒญ์„ ๋ฐ›์€ ์„œ๋ฒ„๋Š” ์ธ์ฆ์„œ์™€ ํ•จ๊ป˜ ์‘๋‹ต์„ ์ „์†กํ•˜๊ณ , ์‘๋‹ต์„ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ์ธ์ฆ์„œ์— ์ž‘์„ฑ๋œ ๋„๋ฉ”์ธ๊ณผ ์‘๋‹ต ๊ฐ์ฒด์— ์ž‘์„ฑ๋œ ๋„๋ฉ”์ธ์„ ๋น„๊ตํ•˜์—ฌ ๊ฐ™๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ์„œ๋ฒ„๊ฐ€ ์ง„์งœ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • CA (Certificate Authority)
    • ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•˜๋Š” ๊ณต์ธ๋œ ๊ธฐ๊ด€์ด๋‹ค.
    • ๊ฐ ๋ธŒ๋ผ์šฐ์ €๋Š” ์‹ ๋ขฐํ•˜๋Š” CA์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์ธ์ฆ์„œ์˜ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.
  • ๋น„๋Œ€์นญ ํ‚ค ์•”ํ˜ธํ™”
    • ์•”ํ˜ธํ™” ๋ฐ ๋ณตํ˜ธํ™” ๊ฐ€๋Šฅ
    • Aํ‚ค๋กœ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋ฉด ํ•ด๋‹น ํ‚ค๋ฅผ ๋ณตํ˜ธํ™”ํ•˜๋Š”๋ฐ Aํ‚ค์˜ ์Œ์ธ Bํ‚ค๋กœ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

์•”ํ˜ธํ™”

  • ์ œ 3์ž๊ฐ€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฃผ๊ณ ๋ฐ›๋Š” ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•  ์ˆ˜ ์—†๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋Š”์„œ๋กœ๊ฐ€ ํ•ฉ์˜ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ์•ˆํ˜ธํ™”ํ•˜์—ฌ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค.
  • ์ค‘๊ฐ„์— ์ œ 3์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ํƒˆ์ทจ๋˜๋”๋ผ๋„ ๊ทธ ๋‚ด์šฉ์„ ์•Œ์•„๋ณผ ์ˆ˜ ์—†๋‹ค.
  • ์ผ๋ จ์˜ ์ •๋ณด๋ฅผ ์ž„์˜์˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ•ด๋‹น ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์†Œ์œ ํ•œ ์‚ฌ๋žŒ์„ ์ œ์™ธํ•˜๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์—†๋„๋ก '์•Œ๊ณ ๋ฆฌ์ฆ˜'์„ ์ด์šฉํ•ด ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

mkcert

  • ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ๋ฅผ ๋งŒ๋“ ๋‹ค.
  • ๋กœ์ปฌ์„ ์ธ์ฆ๋œ ๊ธฐ๊ด€์œผ๋กœ ์ถ”๊ฐ€ํ•œ ๋’ค ๋กœ์ปฌ ํ™˜๊ฒฝ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
// ์„ค์น˜
brew install mk cert

// ๋กœ์ปฌ์„ ์ธ์ฆ๋œ ๋ฐœ๊ธ‰๊ธฐ๊ด€์œผ๋กœ ์ถ”๊ฐ€
mkcert -install

// ๋กœ์ปฌ ํ™˜๊ฒฝ ์ธ์ฆ์„œ ์ƒ์„ฑ
mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1

Hashing

  • ์–ด๋–ค ๋ฌธ์ž์—ด์— '์ž„์˜์˜ ์—ฐ์‚ฐ'์„ ์ ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ
    1. ๋ชจ๋“  ๊ฐ’์— ๋Œ€ํ•ด ํ•ด์‹œ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ ์˜ค๋ž˜๊ฑธ๋ฆฌ์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
    2. ์ตœ๋Œ€ํ•œ ํ•ด์‹œ ๊ฐ’์„ ํ”ผํ•ด์•ผ ํ•˜๋ฉฐ, ๋ชจ๋“  ๊ฐ’์€ ๊ณ ์œ ํ•œ ํ•ด์‹œ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.
    3. ์•„์ฃผ ์ž‘์€ ๋‹จ์œ„์˜ ๋ณ€๊ฒฝ์ด๋ผ๋„ ์™„์ „ํžˆ ๋‹ค๋ฅธ ํ•ด์‹œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

Salt

  • ์•”ํ˜ธํ™”ํ•ด์•ผ ํ•˜๋Š” ๊ฐ’์— ์–ด๋–ค '๋ณ„๋„์˜ ๊ฐ’'์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€ํ˜•ํ•˜๋Š” ๊ฒƒ
    1. ์•”ํ˜ธํ™”๋งŒ ํ•ด๋†“๋Š”๋‹ค๋ฉด ํ•ด์‹œ๋œ ๊ฒฐ๊ณผ๊ฐ€ ๋Š˜ ๋™์ผํ•˜๋‹ค.
      ํ•ด์‹œ๋œ ๊ฐ’๊ณผ ์›๋ž˜ ๊ฐ’์„ ํ…Œ์ด๋ธ”(๋ ˆ์ธ๋ณด์šฐ ํ…Œ์ด๋ธ”)๋กœ ๋งŒ๋“ค์–ด์„œ decoding ํ•ด๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ๋„ ์ƒ๊ธด๋‹ค.
    2. ์›๋ณธ๊ฐ’์— ์ž„์˜๋กœ ์•ฝ์†๋œ ๋ณ„๋„์˜ ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•ด์‹œ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค๋ฉด ๊ธฐ์กด ํ•ด์‹œ๊ฐ’๊ณผ ์ „ํ˜€ ๋‹ค๋ฅธ ํ•ด์‹œ๊ฐ’์ด ๋ฐ˜ํ™˜๋˜์–ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋…ธ์ถœ๋˜๋”๋ผ๋„ ์›๋ณธ๊ฐ’์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์•ˆ์ • ์žฅ์น˜์ด๋‹ค.
    3. ๊ธฐ์กด: ์•”ํ˜ธํ™” ํ•˜๋ ค๋Š” ๊ฐ’ -> hash ๊ฐ’
      Salt: ์•”ํ˜ธํ™” ํ•˜๋ ค๋Š” ๊ฐ’ + Salt ์šฉ ๊ฐ’ => hash ๊ฐ’

Cookie

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

1. Domain

  • www.google.com๊ณผ ๊ฐ™์€ ์„œ๋ฒ„์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„

2. Path

  • ์„ธ๋ถ€ ๊ฒฝ๋กœ๋กœ์จ ์„œ๋ฒ„๊ฐ€ ๋ผ์šฐํŒ…ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • ์„ค์ •๋œ ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•˜๋Š” ํ•˜์œ„ ๊ฒฝ๋กœ๋กœ ์š”์ฒญ์„ ํ•ด๋„ ์ฟ ํ‚ค๋ฅผ ์„œ๋ฒ„์— ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

3. MaxAge or Expires

  • ์ฟ ํ‚ค๊ฐ€ ์œ ํšจํ•œ ๊ธฐ๊ฐ„์„ ์ •ํ•˜๋Š” ์˜ต์…˜
  • MaxAge: ์‹œ๊ฐ„์„ ์ดˆ ๋‹จ์œ„๋กœ ์„ค์ •
  • Expires: ๋‚ ์งœ ์„ค์ •
  • ์„ธ์…˜ ์ฟ ํ‚ค: MaxAge, Expires ์˜ต์…˜์ด ์—†๋Š” ์ฟ ํ‚ค(์ž„์‹œ ์ฟ ํ‚ค)
  • ์˜์†์„ฑ ์ฟ ํ‚ค: MaxAge, Expires์— ์ง€์ •๋œ ์œ ํšจ์‹œ๊ฐ„๋งŒํผ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ฟ ํ‚ค

4. Secure

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

5. HttpOnly

  • JS์—์„œ ๋ธŒ๋ผ์šฐ์ €์˜ ์ฟ ํ‚ค์— ์ ‘๊ทผ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.
  • ์˜ต์…˜์ด true์ธ ๊ฒฝ์šฐ js๋กœ ์ฟ ํ‚ค์— ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค.

6. SameSite

  • Cross-Orgin ์š”์ฒญ์„ ๋ฐ›์€ ๊ฒฝ์šฐ ์š”์ฒญ์—์„œ ์‚ฌ์šฉํ•œ ๋ฉ”์†Œ๋“œ์™€ ํ•ด๋‹น ์˜ต์…˜์˜ ์กฐํ•ฉ์„ ๊ธฐ์ค€์œผ๋กœ ์„œ๋ฒ„์˜ ์ฟ ํ‚ค ์ „์†ก ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋œ๋‹ค.

์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•œ ์ƒํƒœ ์œ ์ง€

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

Session

  • ์„œ๋ฒ„๊ฐ€ Client์— ์œ ์ผํ•˜๊ณ  ์•”ํ˜ธํ™”๋œ ID๋ฅผ ๋ถ€์—ฌ
  • ์ค‘์š” ๋ฐ์ดํ„ฐ๋Š” ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌ

๐Ÿ“˜ ์ถ”๊ฐ€๋กœ ๊ณต๋ถ€ํ•  ๋‚ด์šฉ

[udemy] React ์™„๋ฒฝ ๊ฐ€์ด๋“œ ๊ฐ•์˜ ๋ณด๊ธฐ (๋งค์ผ ์กฐ๊ธˆ์”ฉ ์ด๋ผ๋„ ๊พธ์ค€ํžˆ ๋“ฃ๊ธฐ)

axios ์‚ฌ์šฉ๋ฐฉ๋ฒ•

๐Ÿ“ ์ค‘์š”ํ•œ ๋‚ด์šฉ

  • ์ฟ ํ‚ค: ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์„ธ์…˜: ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ์— ์„ฑ๊ณตํ•œ ์ƒํƒœ
  • axios๋กœ ์„œ๋ฒ„์™€ ํ†ต์‹ ๊ฐ€๋Šฅ (fetch์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ, ์‹ค๋ฌด์—์„œ ๋งŽ์ด ์‚ฌ์šฉ)
axios fetch
์จ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์„ค์น˜ ํ•ด์•ผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ) ๋นŒํŠธ์ธ(์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
XSRF ๋ณด์•ˆ ๊ธฐ๋Šฅ ์ œ๊ณต ๋ณด์•ˆ ๊ธฐ๋Šฅ ์—†์Œ
์ž๋™ JSON ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ JSON ๋ฐ์ดํ„ฐ ํ•ธ๋“ค๋ง ์œ„ํ•œ ์ถ”๊ฐ€ ๋กœ์ง ๊ตฌํ˜„
๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ์ฒด๊ฐ€ ํฌํ•จ๋จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌธ์ž์—ดํ™” ๋˜์–ด์•ผํ•จ

์ถ”๊ฐ€ ๋น„๊ต ํ‘œ: https://www.geeksforgeeks.org/difference-between-fetch-and-axios-js-for-making-http-requests/

 

Difference between Fetch and Axios.js for making http requests - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

'Daily > Today I Learned' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

22.07.18_TIL  (0) 2022.07.18
22.07.15_TIL  (0) 2022.07.15
22.07.12_TIL  (0) 2022.07.12
22.07.11_TIL  (2) 2022.07.11
22.07.08_TIL  (0) 2022.07.08