D+67
- Browser Security -
(XSS, CORS)
XSS
XSS๋?
XSS๋ ์ ์์ ์ธ ์น ์ฑ์ ์ ์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ฃผ์ ํ์ฌ ๊ฐ๋ฐ์๊ฐ ๊ณ ๋ คํ์ง ์์ ๊ธฐ๋ฅ์ ์๋ํ๊ฒ ํ๋ ๊ณต๊ฒฉ์ผ๋ก
์๋ฒ๊ฐ ์๋ ํด๋ผ์ด์ธํธ(์ฌ์ฉ์)๊ฐ ์๋ฒ๋ฅผ ์ ๋ขฐํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ์ด์์ด๋ค.
๋จ์ํ ์ฌ์ฉ์๋ฅผ ๊ณจํ๋จน์ด๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉ๋ ์๋ ์์ง๋ง
๋ง์ฝ ์ ์ํ ํ์ด์ง๊ฐ ์ํ์ฌ์ดํธ๋ ํ์๊ฐ์ ์ฐฝ๊ณผ ๊ฐ์ ๋ค์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ์ด์ง๋ผ๋ฉด
์ด์ฉ๋ฉด ๋ด ์ ๋ณด๋ฅผ ํด์ปค์๊ฒ ์์ํ ์ค ์๋ ์๋ ๊ฝค๋ ๋ฌด์๋ฌด์ํ ๊ณต๊ฒฉ์ด๋ค.
XSS ๋ฐฉ์ด ๊ธฐ๋ฒ
ํ๋์์์ ๋ธ๋ผ์ฐ์ ๊ฐ์ ๊ฒฝ์ฐ๋ ์ผ๋ฐ์ ์ธ XSS ๊ณต๊ฒฉ์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์ด๋ ๋ง๋ จํด๋๊ณ ์๋ ์ํ์ด๋ค.
ํ์ง๋ง ๊ทธ๋ผ์๋ ํด์ปค๋ค์ XSS ๊ณต๊ฒฉ์ผ๋ก ์ธ์ ์ฐ๋ฆฌ์์ ๋ค๊ฐ์ฌ์ง ๋ชจ๋ฅธ๋ค.
์ด๋ฅผ ์๋ฐฉํ๊ธฐ ์ํด ๋์จ ๋ฐฉ๋ฒ์ด ์ ๊ทํํ์(Regular Expression)์ด๋ค.
์ ๊ท ํํ์์ ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ ์ค์ ํ๋๋ก ํน์ ํ ์กฐ๊ฑด์ ๋ฌธ์๋ฅผ '๊ฒ์'ํ๊ฑฐ๋
'์นํ'ํ๋ ๊ณผ์ ์ ๋งค์ฐ ๊ฐํธํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๋ ์๋จ์ด๋ค.
์ ๊ทํํ์ ๋ง๊ณ ๋ XSS๋ฅผ ๋ฐฉ์ดํ๋ ๊ธฐ๋ฒ์ ๋ง์ด ์์ผ๋ ๋์ฑ ์ฐพ์๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
CORS (Cross Origin Resource Sharing)
CORS ๊ฐ๋
์ฌ๊ธฐ domain-a.com๋ผ๋ ์ฌ์ดํธ๊ฐ ์๋ค.
์ด ๊ณต๊ฐ์ domain-a.com์ด๋ผ๋ ๊ณณ์ ๊ณต๊ฐ์ด๊ธฐ ๋๋ฌธ์
domain-a.com์ ์น ์๋ฒ๋ก ๋ถํฐ ์ ๋ณด๋ฅผ ๋ฐ์์จ๋ค๊ณ ํ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ฝ์ domain-a.com๊ณต๊ฐ์์ domain-b.com์ ์ ๋ณด๋ฅผ ๋ฐ์์ค๊ณ ์ถ๋ค๋ฉด ์ ๋ณด๋ฅผ ๋ฐ์์ฌ ์ ์์๊น?
์ด๋ CORS๋ฅผ ํตํด domain-a.com์์ ํน์ ๋๋ฉ์ธ์ ๋ค์ด์ฌ ์ ์๋๋ก ํ์ฉํด ์ค๋ค.
์ฆ, CORS๋ ํ๋ง๋๋ก ๋ค๋ฅธ Origin์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ ์ ์๋๋ก ํ์ฉํ ๊ตฌ์กฐ์ด๋ค.
CORS๊ฐ ๋ฑ์ฅํ๊ฒ ๋ ๋ฐฐ๊ฒฝ
๊ณผ๊ฑฐ์๋ ๊ธฐ์ ์ ์ธ ๋ฉด๊ณผ ๋ณด์์ ์ธ ๊ฒ์ ๊ณ ๋ คํด ๋๋ฉ์ธ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ์ ์์ฒญ์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ํ์๋ค.
ํ์ง๋ง ์์ฆ์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ๊ณ ๋ํ๊ฐ ๋์ด ๋ค๋ฅธ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ ๋ณด๋ฅผ ์ฐธ๊ณ ํ๊ฑฐ๋ ์ฌ์ฉํ๋ ๋ฑ
์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ํ๋ CORS๊ฐ ๋ฑ์ฅํ๊ฒ ๋์๋ค.
CORS ์ฌ์ฉ 1 : Simple Request
• ์์ฒญ ๋ฉ์๋๋ GET, HEAD, POST ์ค ํ๋์ฌ์ผ ํ๋ค.
• Accept, Aceept-Language, Content-Language, Content-Type, DPR, Downlink, Save-Data, Viewport-Width, Width๋ฅผ ์ ์ธํ ํค๋๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ค.
• ๋ง์ฝ Content-Type๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ application/x-www-form-urlencoded, multiplart/form-data, text/plain๋ง ํ์ฉ๋๋ค.
CORS ์ฌ์ฉ 2 : Preflight Request
• ์์ฒญ ๋ฉ์๋๋ PUT, DELETE, OPTIONS, PATCH๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
Preflight Request๋ ์ ์์ผ๋ก ๋ฉ์๋๋ฅผ ๋ ๋ฆฌ๊ธฐ ์ ์ OPTIONS ๋ฉ์๋๋ฅผ ํตํด ๋จผ์ ์ค์ ์์ฒญ์ด ์ ์กํ๊ธฐ์ ์์ ํ ๊ณณ์ธ์ง ํ์ธํ ๋ค์์ ์์ ํ๋ค๊ณ ํ๋จ๋๋ฉด ์ค์ ์ ์ ๋ฉ์๋๋ฅผ ๋ ๋ฆฌ๋๋ก ํ๋ค.
'์๋ > Code-States' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+69] ๋น๋๊ธฐ ๋ฐ๋ณต ํ์ต (feat. ์ฒ์์ผ๋ก ๋๋์๊ฐ๊ธฐ) (0) | 2020.12.26 |
---|---|
[D+68] ์ฝ๋ฉ ํฌ๋ฆฌ์ค๋ง์ค ๐ ๐ป (0) | 2020.12.25 |
[D+66] Web Architectures (0) | 2020.12.23 |
[D+65] ์น ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ fetch (0) | 2020.12.23 |
[D+65] ๋น๋๊ธฐ ํธ์ถ์ ๋ํ ๋์ ์๊ฐ (0) | 2020.12.22 |
๋๊ธ