Contents

CORS에 λŒ€ν•˜μ—¬(2)

   Jun 13, 2023     1 min read

Cross-Origin Resource Sharing(μ΄ν•˜ CORS)에 λŒ€ν•œ κΈ€μž…λ‹ˆλ‹€.

CORS κΈ°λ³Έ λ™μž‘ μˆœμ„œ

κ°œλ°œμžλŠ” APIλ₯Ό λ‹€λ£¨λŠ” 것에 μžˆμ–΄ μ’…μ’… Cross-Origin Resource Sharing(μ΄ν•˜ CORS) errorλ₯Ό λ§ˆμ£Όν•©λ‹ˆλ‹€.(특히 FE κ°œλ°œμžλŠ” λ”μš±μ΄μš”!)


μ™œ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ 사이에 μžˆλŠ” λΈŒλΌμš°μ €μ—λŠ” CORS와 같은 정책이 μ‘΄μž¬ν• κΉŒμš”?

λ°”λ‘œ μ›Ήμ„œλ²„λ₯Ό κ±°μ³μ„œ μš”μ²­ν•˜κΈ° λ•Œλ¬Έμ— μ•…μš©λ  수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€. 이λ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„  Same-Origin Policy(μ΄ν•˜ SOP)λ₯Ό μ•Œκ³  μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

  • SOPλž€ μ›Ή λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰λ˜λŠ” μŠ€ν¬λ¦½νŠΈλ‚˜ λ‹€λ₯Έ 좜처(origin)μ—μ„œ λ‘œλ“œλœ λ¦¬μ†ŒμŠ€μ™€ μƒν˜Έμž‘μš©ν•˜λŠ” 것을 μ œν•œν•˜λŠ” λ³΄μ•ˆ λ©”μ»€λ‹ˆμ¦˜μž…λ‹ˆλ‹€.
  • SOP에 μ˜ˆμ™Έ 사항을 λ‘λŠ” 것이 CORSμž…λ‹ˆλ‹€! μ •μ±…μ—μ„œ ν—ˆλ½ν•˜λŠ” λ²”μœ„ λ‚΄μ—μ„œ μΆœμ²˜κ°„ λ¦¬μ†ŒμŠ€λ₯Ό ν—ˆμš©ν•˜κ±°λ‚˜ μ„œλ²„ μΈ‘μ—μ„œ νŠΉμ • 헀더λ₯Ό μ„€μ •ν•˜μ—¬ SOPλ₯Ό μš°νšŒν•  수 있게 ν•©λ‹ˆλ‹€.
문득 κΆκΈˆν•΄μ§‘λ‹ˆλ‹€. μ›Ήμ„œλ²„λ₯Ό 거치면 μ–΄λ–»κ²Œ μ•…μš©λ  수 μžˆμ„κΉŒμš”?

μ›Ήμ„œλ²„λ₯Ό 톡해 μš”μ²­ν•˜λ©΄ ꡬ체적으둜 μ–΄λ–»κ²Œ μ•…μš©λ  수 μžˆλŠ”μ§€ μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

  1. XSS 곡격: XSSλŠ” μ•…μ˜μ μΈ μ‚¬μš©μžκ°€ μ›Ή νŽ˜μ΄μ§€μ— μ•…μ„± 슀크립트λ₯Ό μ‚½μž…ν•˜μ—¬ λ‹€λ₯Έ μ‚¬μš©μžμ˜ λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰λ˜λ„λ‘ ν•˜λŠ” κ³΅κ²©μž…λ‹ˆλ‹€. λ‹€λ₯Έ λ„λ©”μΈμ˜ λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•  수 μžˆλŠ” 경우, μ•…μ„± μŠ€ν¬λ¦½νŠΈκ°€ ν¬ν•¨λœ μ›Ή νŽ˜μ΄μ§€μ—μ„œλŠ” λ‹€λ₯Έ λ„λ©”μΈμ˜ λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•˜μ—¬ 정보λ₯Ό νƒˆμ·¨ν•˜κ±°λ‚˜ μ‘°μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. CSRF 곡격: CSRFλŠ” 인증된 μ‚¬μš©μžκ°€ μžμ‹ μ˜ μ˜μ§€μ™€λŠ” λ¬΄κ΄€ν•˜κ²Œ 곡격자의 μ˜λ„μ— 따라 νŠΉμ • μ›Ή μ‚¬μ΄νŠΈμ— μš”μ²­μ„ λ³΄λ‚΄λŠ” κ³΅κ²©μž…λ‹ˆλ‹€. λ‹€λ₯Έ λ„λ©”μΈμ˜ λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•  수 μžˆλŠ” 경우, μ•…μ˜μ μΈ μ›Ή μ‚¬μ΄νŠΈμ—μ„œλŠ” μ‚¬μš©μžμ˜ 인증 정보λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹€λ₯Έ λ„λ©”μΈμ˜ μ„œλΉ„μŠ€μ— μœ„μ‘°λœ μš”μ²­μ„ 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 곡격을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ SOP이 λ„μž…λœ 것이고, 좜처 κ°„ 톡신을 μ•ˆμ „ν•˜κ²Œ μ œμ–΄ν•  수 μžˆλ„λ‘ CORSκ°€ μƒκ²ΌμŠ΅λ‹ˆλ‹€.
λ‚˜μ•„κ°€ 더 κΆκΈˆν•΄μ§‘λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ μ„œλ²„μ™€ μ„œλ²„μ˜ 톡신엔 CORS와 같은 정책이 μ‘΄μž¬ν• κΉŒμš”?

κ²°λ‘ λΆ€ν„° λ§ν•˜μžλ©΄ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ„œλ²„μ™€ μ„œλ²„ μ‚¬μ΄μ—μ„œλŠ” μ›Ήμ„œλ²„μ™€ 같은 쀑간 단계 없이 λ°”λ‘œ 톡신이 이루어지기 λ•Œλ¬Έμž…λ‹ˆλ‹€. μ„œλ²„λ“€μ€ μ‹ λ’°ν•  수 μžˆλŠ” ν™˜κ²½μ—μ„œ λ™μž‘ν•©λ‹ˆλ‹€. μ„œλ‘œμ˜ 신원을 ν™•μΈν•˜κ³ , 톡신 데이터λ₯Ό μ•”ν˜Έν™”ν•˜μ—¬ λ°μ΄ν„°μ˜ κΈ°λ°€μ„±κ³Ό 무결성을 보μž₯ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

좜처 비ꡐ 과정을 λ””ν…ŒμΌν•˜κ²Œ μ•Œκ³  μ‹Άμ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.

3νŽΈμ—μ„œ λ§ˆμ € 닀루도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€. 링크