곡유기 λ³΄μ•ˆ/λͺ¨μ˜ν•΄ν‚Ή

04. μ›Ή λ³΄μ•ˆ 기초

Jaeyoon Β· κ°œλ… ν•™μŠ΅ HTTP/HTTPS, μΏ ν‚€/μ„Έμ…˜, 폼, ν”Όμ‹± λ°©μ–΄, ꡐ윑용 κ²½κ³  νŽ˜μ΄μ§€

μ›Ή λ³΄μ•ˆμ„ λ¨Όμ € 이해해야 ν•˜λŠ” 이유

DNS 응닡이 λ°”λ€Œλ©΄ λΈŒλΌμš°μ €λŠ” 응닡받은 IP의 μ›Ή μ„œλ²„λ‘œ μ΄λ™ν•©λ‹ˆλ‹€. μ΄λ•Œ μ‚¬μš©μžκ°€ μ‹€μ œλ‘œ λ§ˆμ£Όν•˜λŠ” 것은 λ„€νŠΈμ›Œν¬ νŒ¨ν‚·μ΄ μ•„λ‹ˆλΌ μ›Ή νŽ˜μ΄μ§€μž…λ‹ˆλ‹€. κ·Έλž˜μ„œ μ›Ή λ³΄μ•ˆ νŒŒνŠΈλŠ” DNS λ³€μ‘° μ‹€μŠ΅μ˜ κ²°κ³Όκ°€ μ‚¬μš©μž ν™”λ©΄μ—μ„œ μ–΄λ–»κ²Œ λ‚˜νƒ€λ‚˜λŠ”μ§€ μ„€λͺ…ν•˜λŠ” μž₯μž…λ‹ˆλ‹€.

μ€‘μš”ν•œ 것은 β€œκ°€μ§œ νŽ˜μ΄μ§€λ₯Ό μ–Όλ§ˆλ‚˜ λΉ„μŠ·ν•˜κ²Œ λ§Œλ“œλŠ”κ°€β€κ°€ μ•„λ‹™λ‹ˆλ‹€. ν”„λ‘œμ νŠΈμ˜ λͺ©μ μ€ μ‚¬μš©μžκ°€ μ–΄λ–€ μ§€μ μ—μ„œ μœ„ν—˜μ„ μ•Œμ•„μ°¨λ €μ•Ό ν•˜λŠ”μ§€, 그리고 HTTPS와 μΈμ¦μ„œ 검증이 μ™œ μ€‘μš”ν•œ λ°©μ–΄ μ‹ ν˜ΈμΈμ§€ μ„€λͺ…ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

λ”°λΌμ„œ ꡐ윑용 νŽ˜μ΄μ§€μ—λŠ” μ‹€μŠ΅μš©μž„μ„ λͺ…ν™•νžˆ ν‘œμ‹œν•˜κ³ , μ•„μ΄λ””λ‚˜ λΉ„λ°€λ²ˆν˜Έ 같은 κ°œμΈμ •λ³΄ μž…λ ₯칸을 λ§Œλ“€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ‹€μ œ κ³΅κ²©μ—μ„œ μ–΄λ–€ ν”Όν•΄κ°€ 생길 수 μžˆλŠ”μ§€λ§Œ μ„€λͺ…ν•˜κ³ , 정보 μˆ˜μ§‘ κΈ°λŠ₯은 λ°°μ œν•©λ‹ˆλ‹€.

그림으둜 λ³΄λŠ” HTTP와 HTTPS

HTTP와 HTTPS 차이
HTTPλŠ” 평문 톡신이고 HTTPSλŠ” TLS와 μΈμ¦μ„œ 검증을 톡해 톡신을 λ³΄ν˜Έν•œλ‹€.
μ›Ή λ³΄μ•ˆμ˜ 핡심은 μ£Όμ†Œμ°½, μΈμ¦μ„œ, μž…λ ₯ μš”κ΅¬λ₯Ό ν•¨κ»˜ ν™•μΈν•˜λŠ” μŠ΅κ΄€μž…λ‹ˆλ‹€.DNS 응닡이 λ°”λ€Œμ–΄λ„ HTTPS μΈμ¦μ„œ 검증은 μ‚¬μš©μžλ₯Ό λ³΄ν˜Έν•˜λŠ” μ€‘μš”ν•œ μ‹ ν˜Έκ°€ 될 수 μžˆμŠ΅λ‹ˆλ‹€.
μ‰½κ²Œ λ§ν•˜λ©΄μ›Ή λ³΄μ•ˆμ€ μ£Όμ†Œμ°½μ„ μ½λŠ” μŠ΅κ΄€μ—μ„œ μ‹œμž‘ν•©λ‹ˆλ‹€. 같은 ν™”λ©΄μ²˜λŸΌ 보여도 URL, HTTPS μžλ¬Όμ‡ , μΈμ¦μ„œ κ²½κ³ , μž…λ ₯ μš”κ΅¬κ°€ λ‹€λ₯΄λ©΄ μœ„ν—˜ μ‹ ν˜ΈμΌ 수 μžˆμŠ΅λ‹ˆλ‹€.
ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„
ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ Wikimedia Commons
HTTP κ°œλ…
HTTP κ°œλ… Wikimedia Commons
TLS ν•Έλ“œμ…°μ΄ν¬
TLS ν•Έλ“œμ…°μ΄ν¬ Wikimedia Commons

HTTP μš”μ²­κ³Ό 응닡 ꡬ쑰

HTTP μš”μ²­κ³Ό 응닡 ꡬ쑰
λΈŒλΌμš°μ € μš”μ²­μ—λŠ” λ©”μ„œλ“œ, 경둜, 헀더가 λ“€μ–΄κ°€κ³  μ„œλ²„ μ‘λ‹΅μ—λŠ” μƒνƒœ μ½”λ“œμ™€ 본문이 λ“€μ–΄κ°„λ‹€.

λΈŒλΌμš°μ €λŠ” μ›Ή μ„œλ²„μ— HTTP μš”μ²­μ„ 보내고, μ„œλ²„λŠ” μƒνƒœ μ½”λ“œμ™€ HTML λ¬Έμ„œλ₯Ό μ‘λ‹΅ν•©λ‹ˆλ‹€. μš”μ²­μ—λŠ” λ©”μ„œλ“œ, 경둜, Host, User-Agent 같은 정보가 λ“€μ–΄κ°‘λ‹ˆλ‹€. Wiresharkμ—μ„œλŠ” HTTP νŠΈλž˜ν”½μ„ 보면 μ‚¬μš©μžκ°€ μ–΄λ–€ Host와 경둜λ₯Ό μš”μ²­ν–ˆλŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

GET은 주둜 νŽ˜μ΄μ§€λ₯Ό μš”μ²­ν•  λ•Œ μ‚¬μš©ν•˜κ³ , POSTλŠ” 폼 데이터λ₯Ό μ„œλ²„λ‘œ 전솑할 λ•Œ 자주 μ‚¬μš©ν•©λ‹ˆλ‹€. 이 ν”„λ‘œμ νŠΈμ—μ„œλŠ” μ‹€μ œ 둜그인 폼을 κ΅¬ν˜„ν•˜μ§€ μ•Šκ³ , λ²„νŠΌ ν΄λ¦­μ΄λ‚˜ μ•ˆλ‚΄ 문ꡬ μ •λ„λ‘œ ꡬ성해 μœ„ν—˜μ„±μ„ μ„€λͺ…ν•©λ‹ˆλ‹€.

HTTPλŠ” μ•”ν˜Έν™”λ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— ν•™μŠ΅ ν™˜κ²½μ—μ„œλŠ” Host 헀더와 μš”μ²­ κ²½λ‘œκ°€ 잘 λ³΄μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ‹€μ œ ν™˜κ²½μ—μ„œ λ―Όκ°ν•œ 정보가 HTTP둜 μ „μ†‘λ˜λ©΄ μ€‘κ°„μ—μ„œ λ…ΈμΆœλ  수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ HTTPλŠ” ꡬ쑰λ₯Ό λ°°μš°κΈ°μ—λŠ” μ§κ΄€μ μ΄μ§€λ§Œ, λ‘œκ·ΈμΈμ΄λ‚˜ 결제처럼 λ―Όκ°ν•œ λ™μž‘μ—λŠ” μ ν•©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

HTTPS와 μΈμ¦μ„œ 검증

HTTPS μΈμ¦μ„œ 검증과 TLS 흐름
λΈŒλΌμš°μ €λŠ” μΈμ¦μ„œλ₯Ό ν™•μΈν•œ λ’€ TLS둜 λ³΄ν˜Έλ˜λŠ” 톡신 채널을 λ§Œλ“ λ‹€.

HTTPSλŠ” HTTP μœ„μ— TLSκ°€ 적용된 λ°©μ‹μž…λ‹ˆλ‹€. TLSλŠ” μ•”ν˜Έν™”, 무결성, μ„œλ²„ 인증을 μ œκ³΅ν•©λ‹ˆλ‹€. μ‚¬μš©μžλŠ” μ£Όμ†Œμ°½μ˜ μžλ¬Όμ‡ μ™€ μΈμ¦μ„œ 정보λ₯Ό 톡해 ν˜„μž¬ μ ‘μ†ν•œ μ„œλ²„κ°€ ν•΄λ‹Ή λ„λ©”μΈμ˜ μ •λ‹Ήν•œ μ„œλ²„μΈμ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

DNS 응닡이 μ‹€μŠ΅μš© κ²½κ³  νŽ˜μ΄μ§€ IP둜 λ°”λ€Œλ”λΌλ„, κ°€μ§œ μ„œλ²„κ°€ 정상 λ„λ©”μΈμ˜ μΈμ¦μ„œλ₯Ό μ œμ‹œν•  수 μ—†λ‹€λ©΄ λΈŒλΌμš°μ €λŠ” μΈμ¦μ„œ κ²½κ³ λ₯Ό ν‘œμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 점은 β€œDNSκ°€ λ°”λ€Œλ©΄ 무쑰건 μ†λŠ”λ‹€β€κ°€ μ•„λ‹ˆλΌ β€œHTTPS 검증이 μ€‘μš”ν•œ 방어측이 λœλ‹€β€λŠ” μ„€λͺ…μœΌλ‘œ μ—°κ²°λ©λ‹ˆλ‹€.

HTTPSλ₯Ό 곡뢀할 λ•ŒλŠ” λ‹¨μˆœνžˆ β€œμ•”ν˜Έν™”λœλ‹€β€μ—μ„œ λ©ˆμΆ”λ©΄ μ•ˆ λ©λ‹ˆλ‹€. λΈŒλΌμš°μ €μ˜ μžλ¬Όμ‡  ν‘œμ‹œλŠ” 톡신 λ‚΄μš©μ΄ μ•”ν˜Έν™”λ˜μ—ˆλ‹€λŠ” λœ»μ΄λ©΄μ„œ, λ™μ‹œμ— ν˜„μž¬ μ„œλ²„κ°€ ν•΄λ‹Ή λ„λ©”μΈμ˜ μΈμ¦μ„œλ₯Ό μ œμ‹œν–ˆλ‹€λŠ” λœ»μž…λ‹ˆλ‹€. κ·Έλž˜μ„œ μΈμ¦μ„œ κ²½κ³ λŠ” μ‚¬μš©μžκ°€ λ°˜λ“œμ‹œ μ£Όμ˜ν•΄μ•Ό ν•  κ°•ν•œ μ‹ ν˜Έμž…λ‹ˆλ‹€.

μΏ ν‚€, μ„Έμ…˜, 폼

쿠킀와 μ„Έμ…˜ 흐름
μΏ ν‚€λŠ” λΈŒλΌμš°μ €μ— μ €μž₯되고 μ„Έμ…˜μ€ μ„œλ²„κ°€ μ‚¬μš©μž μƒνƒœλ₯Ό κΈ°μ–΅ν•˜λŠ” 방식이닀.

μΏ ν‚€λŠ” λΈŒλΌμš°μ €κ°€ μ €μž₯ν•˜κ³  μ„œλ²„ μš”μ²­μ— λ‹€μ‹œ λ³΄λ‚΄λŠ” μž‘μ€ λ°μ΄ν„°μž…λ‹ˆλ‹€. 둜그인 μœ μ§€, μ‚¬μš©μž μ„€μ •, μž₯λ°”κ΅¬λ‹ˆ 같은 κΈ°λŠ₯에 μ“°μž…λ‹ˆλ‹€. μ„Έμ…˜μ€ μ„œλ²„κ°€ μ‚¬μš©μžμ˜ 둜그인 μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜λŠ” 방식이며, λΈŒλΌμš°μ €μ—λŠ” 보톡 μ„Έμ…˜ IDκ°€ μ €μž₯λ©λ‹ˆλ‹€.

μ„Έμ…˜ IDλ‚˜ μΏ ν‚€κ°€ λ…ΈμΆœλ˜λ©΄ 둜그인 μƒνƒœ λ„μš© 같은 ν”Όν•΄κ°€ 생길 수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μ‹€μ œ μ„œλΉ„μŠ€μ—μ„œλŠ” Secure, HttpOnly, SameSite 같은 μΏ ν‚€ λ³΄μ•ˆ μ˜΅μ…˜κ³Ό HTTPS μ‚¬μš©μ΄ μ€‘μš”ν•©λ‹ˆλ‹€.

폼은 μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 값을 μ„œλ²„λ‘œ λ³΄λ‚΄λŠ” HTML μš”μ†Œμž…λ‹ˆλ‹€. ν”„λ‘œμ νŠΈμ˜ ꡐ윑용 νŽ˜μ΄μ§€μ—μ„œλŠ” μ‹€μ œ κ°œμΈμ •λ³΄λ₯Ό μž…λ ₯λ°›μ§€ μ•Šκ³ , β€œμ‹€μ œ κ³΅κ²©μ΄μ—ˆλ‹€λ©΄ 이 μœ„μΉ˜μ—μ„œ 계정 정보가 νƒˆμ·¨λ  수 μžˆμŒβ€μ„ μ„€λͺ…ν•˜λŠ” λ°©μ‹μœΌλ‘œ λŒ€μ²΄ν•©λ‹ˆλ‹€.

μ•ˆμ „ν•œ ν•™μŠ΅ νŽ˜μ΄μ§€ 원칙

ꡐ윑용 κ²½κ³  νŽ˜μ΄μ§€ ꡬ성
ν•™μŠ΅μš© νŽ˜μ΄μ§€λŠ” κ°œμΈμ •λ³΄λ₯Ό μš”κ΅¬ν•˜μ§€ μ•Šκ³  μœ„ν—˜ 원리λ₯Ό μ•ˆμ „ν•˜κ²Œ μ„€λͺ…ν•΄μ•Ό ν•œλ‹€.

μ›Ή λ³΄μ•ˆμ„ 곡뢀할 λ•ŒλŠ” 곡격을 κ·ΈλŒ€λ‘œ 따라 ν•˜λŠ” 것이 μ•„λ‹ˆλΌ 원리λ₯Ό μ•ˆμ „ν•˜κ²Œ μ΄ν•΄ν•˜λŠ” 방식이 μ’‹μŠ΅λ‹ˆλ‹€. ν•™μŠ΅μš© νŽ˜μ΄μ§€ μƒλ‹¨μ—λŠ” β€œλ³΄μ•ˆ ν•™μŠ΅ μ•ˆλ‚΄β€, β€œκ°œμΈμ •λ³΄λ₯Ό μž…λ ₯ν•˜μ§€ λ§ˆμ„Έμš”β€, β€œμ‹€μ œ ν™˜κ²½μ—μ„œλŠ” 계정 νƒˆμ·¨λ‚˜ μ•…μ„± 파일 μ„€μΉ˜λ‘œ μ΄μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€β€ 같은 문ꡬλ₯Ό λ„£μŠ΅λ‹ˆλ‹€.

μ‹€μ œ κΈ°κ΄€ 둜고, μ‹€μ œ 둜그인 ν™”λ©΄, μ‹€μ œ μž…λ ₯ μ €μž₯ κΈ°λŠ₯은 μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•™μŠ΅μ˜ λͺ©μ μ€ μ†μ΄λŠ” 화면을 λ§Œλ“œλŠ” 것이 μ•„λ‹ˆλΌ, μ‚¬μš©μžκ°€ μ–΄λ–€ μš”μ†Œλ₯Ό 보고 μœ„ν—˜μ„ νŒλ‹¨ν•΄μ•Ό ν•˜λŠ”μ§€ μ΄ν•΄ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

ꡬ성 μš”μ†Œλ„£μ„ λ‚΄μš©ν”Όν•΄μ•Ό ν•  λ‚΄μš©
상단 제λͺ©λ³΄μ•ˆ μ‹€μŠ΅ μ•ˆλ‚΄ νŽ˜μ΄μ§€μ‹€μ œ κΈ°κ΄€ 사칭
λ³Έλ¬ΈDNS λ³€μ‘° μœ„ν—˜ μ„€λͺ…μ‚¬μš©μžλ₯Ό μ†μ΄λŠ” 문ꡬ
μž…λ ₯μΉΈμ‚¬μš©ν•˜μ§€ μ•ŠμŒμ•„μ΄λ””/λΉ„λ°€λ²ˆν˜Έ μˆ˜μ§‘
λ²„νŠΌμœ„ν—˜ μ„€λͺ…, 정상 νŽ˜μ΄μ§€ μ΄λ™νŒŒμΌ λ‹€μš΄λ‘œλ“œ μœ λ„

ν—·κ°ˆλ¦¬λŠ” κ°œλ… 비ꡐ

HTTP와 HTTPS의 μ°¨μ΄λŠ” λ‹¨μˆœνžˆ μ£Όμ†Œμ°½μ— μžλ¬Όμ‡ κ°€ μžˆλŠλƒ μ—†λŠλƒκ°€ μ•„λ‹™λ‹ˆλ‹€. HTTPλŠ” μš”μ²­κ³Ό 응닡이 ν‰λ¬ΈμœΌλ‘œ μ˜€κ°€κ³ , HTTPSλŠ” TLSλ₯Ό 톡해 μ•”ν˜Έν™”λœ 톡신 채널을 λ§Œλ“  λ’€ 데이터λ₯Ό μ£Όκ³ λ°›μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ HTTPSμ—μ„œλŠ” μ€‘κ°„μ—μ„œ λ‚΄μš©μ„ λ³΄κ±°λ‚˜ λ°”κΎΈκΈ°κ°€ 훨씬 μ–΄λ ΅μŠ΅λ‹ˆλ‹€.

쿠킀와 μ„Έμ…˜λ„ 자주 ν—·κ°ˆλ¦½λ‹ˆλ‹€. μΏ ν‚€λŠ” λΈŒλΌμš°μ €μ— μ €μž₯λ˜λŠ” μž‘μ€ 데이터이고, μ„Έμ…˜μ€ μ„œλ²„κ°€ μ‚¬μš©μžμ˜ μƒνƒœλ₯Ό κΈ°μ–΅ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. 보톡 λΈŒλΌμš°μ €λŠ” μ„Έμ…˜ IDλ₯Ό μΏ ν‚€λ‘œ λ“€κ³  있고, μ„œλ²„λŠ” κ·Έ IDλ₯Ό 보고 μ‚¬μš©μžλ₯Ό κ΅¬λΆ„ν•©λ‹ˆλ‹€.

ν™•μΈν•˜λ©΄ 쒋은 것
- μ£Όμ†Œμ°½ 도메인
- http / https μ—¬λΆ€
- μΈμ¦μ„œ κ²½κ³  λ°œμƒ μ—¬λΆ€
- νŽ˜μ΄μ§€κ°€ κ°œμΈμ •λ³΄λ₯Ό μš”κ΅¬ν•˜λŠ”μ§€ μ—¬λΆ€
μ‹€μŠ΅ νŽ˜μ΄μ§€λŠ” κ΅μœ‘μš©μž„μ„ λͺ…ν™•νžˆ ν‘œμ‹œν•΄μ•Ό ν•©λ‹ˆλ‹€. μ‹€μ œ κ°œμΈμ •λ³΄ μž…λ ₯, μ €μž₯, 전솑 κΈ°λŠ₯은 ν”„λ‘œμ νŠΈ λ²”μœ„μ—μ„œ μ œμ™Έν•©λ‹ˆλ‹€.

핡심 κ°œλ… 볡슡

μ›Ή λ³΄μ•ˆμ˜ 핡심은 λΈŒλΌμš°μ €κ°€ λˆ„κ΅¬μ™€ μ–΄λ–€ λ°©μ‹μœΌλ‘œ ν†΅μ‹ ν•˜λŠ”μ§€ μ΄ν•΄ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. HTTP μš”μ²­μ—λŠ” λ©”μ„œλ“œ, 경둜, 헀더, 본문이 있고, μ„œλ²„ μ‘λ‹΅μ—λŠ” μƒνƒœ μ½”λ“œ, 헀더, 본문이 μžˆμŠ΅λ‹ˆλ‹€. 이 ꡬ쑰λ₯Ό μ•Œλ©΄ 200, 301, 403, 404 같은 응닡 μ½”λ“œλ„ μžμ—°μŠ€λŸ½κ²Œ 해석할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ›Ή λ³΄μ•ˆ 파트의 결둠은 μ‚¬μš©μžκ°€ URL, HTTPS μΈμ¦μ„œ, λΈŒλΌμš°μ € κ²½κ³ , μž…λ ₯ μš”κ΅¬λ₯Ό ν•¨κ»˜ 확인해야 ν•œλ‹€λŠ” μ μž…λ‹ˆλ‹€. 곡유기 DNS μ„€μ • 점검과 HTTPS 확인은 μ„œλ‘œ λ‹€λ₯Έ 측의 λ°©μ–΄μ΄λ―€λ‘œ λ‘˜ λ‹€ μ€‘μš”ν•©λ‹ˆλ‹€.

μΏ ν‚€, μ„Έμ…˜, 폼은 μ‚¬μš©μžκ°€ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό μƒν˜Έμž‘μš©ν•  λ•Œ 자주 λ“±μž₯ν•©λ‹ˆλ‹€. 이 값듀이 μ–΄λ–»κ²Œ μ €μž₯되고 μ „λ‹¬λ˜λŠ”μ§€ μ΄ν•΄ν•˜λ©΄ 둜그인 μœ μ§€, μ‚¬μš©μž 식별, μ„Έμ…˜ νƒˆμ·¨ μœ„ν—˜ 같은 κ°œλ…λ„ 더 μ‰½κ²Œ λ”°λΌκ°ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒ μž₯μ—μ„œλŠ” 이런 DNS/μ›Ή 흐름에 영ν–₯을 쀄 수 μžˆλŠ” κ³΅μœ κΈ°μ™€ λΌμš°ν„° ꡬ쑰λ₯Ό μžμ„Ένžˆ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€.