[์ฟ ํค๐ช] ์๋ํํฐ์ฟ ํค, ๊ณต๊ฒฉ์ ํ(์ค๊ฐ์๊ณต๊ฒฉ, XSS, CSRF)
- ๋๋ฉ์ธ๊ณผ ์คํค๋ง๊ฐ ๋ค๋ฅด๋ฉด, ๊ฐ์ ์ฌ์ดํธ์์ ์ค์ง ์์ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๊ณ ์ด๋ฅผ ํ์ฌ ์ฟ ํค๋ผ๊ณ ํ๋ค.
- ๋๋ฉ์ธ๊ณผ ์คํค๋ง๊ฐ ์ฌ์ฉ์๊ฐ ํ์ฌ ๋ณด๊ณ ์๋ ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ ํ์๋ URL๊ณผ ์ผ์นํ๋ฉด,
์ฟ ํค๋ ํ์ด์ง์ ๋์ผํ ์ฌ์ดํธ์์ ์จ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋ฉฐ
์ด๋ฅผ First-Party Cookie ๋ผ๊ณ ํ๋ค.
- ํ ์ฌ์ดํธ์ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ค๋ฅธ ์ฌ์ดํธ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ
- ํ์ด์ง๊ฐ ๋ค๋ฅธ ์ฌ์ดํธ์ ๊ตฌ์ฑ ์์๋ฅผ ์๋ฒ ๋ํ๋ ๊ฒฝ์ฐ
์์ฒญ์ ์ค๊ฐ์์ ๊ฐ๋ก์ฑ์ ๋ณ์กฐํ์ฌ ์ ๋ฌํ๋ ๊ณต๊ฒฉ
https://developer.mozilla.org/en-US/docs/Glossary/MitM
MitM - MDN Web Docs Glossary: Definitions of Web-related terms | MDN
A manipulator-in-the-middle attack (MitM) intercepts a communication between two systems. For example, a Wi-Fi router can be compromised.
developer.mozilla.org
๊ณต๊ฒฉ์๊ฐ ์น์ฌ์ดํธ์ ์ ์ฑ ํด๋ผ์ด์ธํธ ์ธก ์ฝ๋๋ฅผ ์ฝ์ ํ ์ ์๋ ๋ณด์ ์ต์คํ๋ก์
์ฃผ์ ๋ ์คํฌ๋ฆฝํธ๋ ๋์ ์๋ฒ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋๋ค.
๊ทธ๋ฐ ๋ค์ ํผํด์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ์ดํฐ ์์ฒญ์ ๋ณด๋ผ ๋ ์๋ฒ์์ ์ด ์ ์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฒ์ํ๋ค.
์ฌ์ฉ์๊ฐ ์ ์ฑ ๋งํฌ๋ฅผ ํด๋ฆญํ๊ฑฐ๋, ํน๋ณํ ์ ์๋ ์์์ ์ ์ถํ๊ฑฐ๋, ์ ์ฑ ์ฌ์ดํธ๋ฅผ ํ์ํ๋๋ก ์์์ ๋, ์ฝ์ ๋ ์ฝ๋๋ ์ทจ์ฝํ ์น์ฌ์ดํธ๋ก ์ด๋ํ๋ค.
์น ์๋ฒ๋ ์ฝ์ ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ค๋ฅ ๋ฉ์์ง, ๊ฒ์ ๊ฒฐ๊ณผ ๋๋ ์์ฒญ์ ์ผ๋ถ๋ก ์๋ฒ๋ก ์ ์ก๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ๋ค๋ฅธ ์๋ต๊ณผ ๊ฐ์ด ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ๋ก ๋ค์ ๋ฐ์ํ๋ค.
๋ธ๋ผ์ฐ์ ๋ ์ฌ์ฉ์๊ฐ ์ด๋ฏธ ์ํธ ์์ฉํ "์ ๋ขฐํ ์ ์๋" ์๋ฒ์์ ์๋ต์ด ์จ ๊ฒ์ผ๋ก ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ์คํํ๋ค.
ํ์ด๋ก๋๋ ์๋ ํด๋ผ์ด์ธํธ ์ธก ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ๋ DOM ํ๊ฒฝ(ํผํด์์ ๋ธ๋ผ์ฐ์ ์์)์ ์์ ํ ๊ฒฐ๊ณผ๋ก ์คํ๋๋ค.
์ฆ, ํ์ด์ง ์์ฒด๋ ๋ณ๊ฒฝ๋์ง ์์ง๋ง ํ์ด์ง์ ํฌํจ๋ ํด๋ผ์ด์ธํธ ์ธก ์ฝ๋๋ DOM ํ๊ฒฝ์ ๋ํ ์ ์์ ์ธ ์์ ์ผ๋ก ์ธํด ์์์น ๋ชปํ ๋ฐฉ์์ผ๋ก ์คํ๋๋ค.
https://developer.mozilla.org/en-US/docs/Web/Security/Types_of_attacks#cross-site_scripting_xss
Types of attacks - Security on the web | MDN
This article describes various types of security attacks and techniques to mitigate them.
developer.mozilla.org
์ธ์ ํ์ด์ฌํน์ ์ฌ์ฉ์๊ฐ ์ธ์ฆ๋ ์ธ์ ์ ๊ณต๊ฒฉ์๊ฐ ๊ฐ๋ก์ฑ์ ์ ์ฉํ๋ ๊ณต๊ฒฉ ๊ธฐ๋ฒ์ด๋ค. ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ๋ก๊ทธ์ธํ๋ฉด ์๋ฒ๋ ์ธ์ ID(์ฟ ํค์ ์ ์ฅ)๋ฅผ ๋ฐ๊ธํ์ฌ ์ฌ์ฉ์๋ฅผ ์๋ณํ๋๋ฐ, ๊ณต๊ฒฉ์๊ฐ ์ด ์ธ์ ID๋ฅผ ํ์ทจํ๋ฉด ์ฌ์ฉ์์ ๊ถํ์ ๊ทธ๋๋ก ๊ฐ์ง ์ ์๋ค.
1. ์ธ์ ์ฟ ํค ํ์ทจ
- XSS๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์์ ์ธ์ ์ฟ ํค๋ฅผ ๊ฐ๋ก์ฑ๋ค
- ๋คํธ์ํฌ ์ค๋ํ์ ํตํด HTTP ์์ฒญ์์ ์ธ์ ์ฟ ํค๋ฅผ ํ๋ณดํ๋ค
2. ์ธ์ ์์ธก
- ์๋ฒ๊ฐ ๋ฐ๊ธํ๋ ์ธ์ ID๊ฐ ์์ธก ๊ฐ๋ฅํ ๊ฒฝ์ฐ, ๊ณต๊ฒฉ์๊ฐ ์ ํจํ ์ธ์ ID๋ฅผ ์์ฑํ์ฌ ๋ก๊ทธ์ธ๋ ์ฌ์ฉ์๋ก ์์ฅํ๋ค
3. MITM (์ค๊ฐ์ ๊ณต๊ฒฉ)
- ๋คํธ์ํฌ ํธ๋ํฝ์ ๊ฐ๋ก์ฑ์ ์ธ์ ์ ๋ณด๋ฅผ ํ์ทจํ๋ค
- HTTPS ์ฌ์ฉ : ๋คํธ์ํฌ ๊ฐ๋ก์ฑ๊ธฐ ๋ฐฉ์ง
- HttpOnly ๋ฐ Secure ์์ฑ ์ ์ฉ : ์ฟ ํค๋ฅผ JavaScript์์ ์ ๊ทผํ์ง ๋ชปํ๋๋กํ๊ณ HTTPS์์๋ง ์ ์ก๋๋๋ก ์ค์ ํ๋ค
- ์ธ์ ํ์์์ ์ค์ : ์ผ์ ์๊ฐ ๋์ ๋นํ์ฑ ์ํ๋ฉด ์ธ์ ์ ์๋์ผ๋ก ์ข ๋ฃํ๋ค
- IP ๋ฐ User-Agent ํ์ธ : ์ธ์ ์ ์์ฑํ ๋ IP์ User-Agent ๊ฐ์ ํจ๊ป ์ ์ฅํ๊ณ , ์ธ์ ์ฌ์ฉ์ ๋์ผํ์ง ํ์ธํ๋ค
https://developer.mozilla.org/en-US/docs/Web/Security/Types_of_attacks#session_hijacking
Types of attacks - Security on the web | MDN
This article describes various types of security attacks and techniques to mitigate them.
developer.mozilla.org
๊ณต๊ฒฉ์๋ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ฉ์์ ๋์๋ ์ง์ ์์ด ์น์ฌ์ดํธ ๋ฐฑ์๋์ ์์ฒญ์ ์ํ ํ๋ค.
์ด๋ฏธ์ง ํ๊ทธ์ ์ค์ ๋ก ์ํ ์๋ฒ์์ ๋์ ์ธ์ถํ๋ผ๋ ์์ฒญ ํ๊ทธ๋ฅผ ๋ฃ๋๋ค.
๋๊ตฐ๊ฐ ์ํ ๊ณ์ข์ ๋ก๊ทธ์ธํ๊ณ ์ฟ ํค๊ฐ ์ฌ์ ํ ์ ํจํ๋ค๋ฉด ์ด ์ด๋ฏธ์ง๊ฐ ํฌํจ๋ HTML ์ ๋ก๋ํ์๋ง์ ๋์ ์ด์ฒดํ๊ฒ ๋๋ค.
์ด๋ฐ ์ผ์ด ์ผ์ด๋์ง ์๋๋ก
GET์ ๋ฉฑ๋ฑ์ ์ผ๋ก ๊ตฌ์ฑํ๋ค (๋ณ๊ฒฝ์ POST, PUT, ...)
CSRF ํ ํฐ์ ์๋ฒ์์ ๋ธ๋ผ์ฐ์ ์ ์ ๊ณตํจ์ผ๋ก์ ์ด๋ฌํ ์์ ์ ์ํํ ์ ์๋๋กํ๋ค
์ธ์ ์ฟ ํค๋ SameStie ์์ฑ์ด Strict๋ก ์ค์ ๋ ์งง์ ์๋ช ์ ๊ฐ์ ธ์ผ ํ๋ค.
CSRF ํ ํฐ๊ณผ SameStie ์ฟ ํค๋ฅผ ๋ชจ๋ ๋ฐฐํฌํด์ผ ํ๋ค