Daily/Today I Learned

22.07.14_TIL

ν˜Έλ°€μ΄ 2022. 7. 14. 09:15

πŸ“Œ μ˜€λŠ˜λΆ€ν„° 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