๋ฐฐ๊ฒฝ์ง์
* HTTP: HyperText Transfer Protocol์ ์ฝ์๋ก, ์ธํฐ๋ท์์ ์ ๋ณด๋ฅผ ์ก์์ ํ๋ ํ๋กํ ์ฝ (๊ท์ฝ)์ ๋๋ค. HTML๋ฌธ์ ์ก์์ ์ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
* REST API: Repersentational State Trasfer API์ ์ฝ์๋ก, REST๋ผ๋ ๊ท์น์ ๋ง์ถฐ ๊ฐ๋ฐ ๋ฐ ์ ๊ณต๋๋ API๋ฅผ ๋งํฉ๋๋ค.
* API: Application Programming Interface์ ์ฝ์๋ก, ํน์ ์๋น์ค๋ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์์ ๋ค์ ์๋น์ค ๋ด๋ถ์ ๊ธฐ๋ฅ๋ค์ ์ ์ดํ ์ ์๋๋ก ๋ง๋ค์ด๋์ ์ธํฐํ์ด์ค๋ฅผ ๋งํฉ๋๋ค.
* XSS (Cross Site Scripting): ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ด๋ฆฌ์๊ฐ ์๋ ๊ถํ์ด ์๋ ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ํ๋ ๊ณต๊ฒฉ์ ๋งํฉ๋๋ค. HTML input ํ๊ทธ๋ ๋ฉ์ผ ๋ด์ฉ ๋ฑ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๋ ฅํ์ฌ ์๋ฒ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ด ๊ทธ ์์์ ๋๋ค.
์ฝํ ์ธ ๋ณด์ ์ ์ฑ
์ฝํ ์ธ ๋ณด์ ์ ์ฑ ์ด๋ ์ฝ๊ฒ ๋งํด์ ์คํฌ๋ฆฝํธ๋ ๋ฐ์ดํฐ์ ์ฝ์ ์ ๋ง๊ธฐ์ํ ๋ธ๋ผ์ฐ์ ๋ณด์์ ์ฑ ์ ๋๋ค.
CORS์ ๋ถ๋ฌ์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๋ค๋ ์ ์์ ๊ณตํต์ ์ด ์์ง๋ง, ๋ณด๋ค ํญ๋๊ฒ ๋ค์ํ ์ค์ ๋ค์ ์ ์ดํ ์ ์์ต๋๋ค.๋ํ CORS๋ ๊ธฐ๋ด์ ์ผ๋ก ํ์ฑํ๋์ด์๊ณ , ์ค์ ์ ํตํด ํด์ ํด์ผํ๋๊ฒ์ ๋นํด, CSP๋ ๋ณ๋ ์ค์ ์ด ์๋ค๋ฉด ํด์ ๋์ด์์ต๋๋ค.
CSP ์ค์
1) ์น๋ฌธ์์ meta ํ๊ทธ๋ก ์ค์
html head์ ์๋ ๋ฉํํ๊ทธ๋ฅผ ์ ๋ ฅํ๋ฉด CSP๊ฐ ํ์ฑํ๋ฉ๋๋ค:
<meta http-equiv="Content-Security-Policy" content="{์กฐ๊ฑด๋ค}">
2) html ๋ฌธ์ ์๋ต์ Content-Security-Policy ํค๋ ์ถ๊ฐ
์๋ต header์ ์๋ ๊ฐ์ ์ถ๊ฐํฉ๋๋ค:
Content-Security-Policy: {์กฐ๊ฑด๋ค}
CSP Directives
์์ {์กฐ๊ฑด๋ค} ํ์์ผ๋ก ์จ๋์ ๋ถ๋ถ์ Directive๋ผ๊ณ ํฉ๋๋ค.
Directive๋ ํน์ ํ์์ ๋ํ ํ์ฉ url์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
ํน์ ํ์์ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ ๋งํฉ๋๋ค:
style-src: css์ ๊ด๋ จ๋ ๊ฐscript-src: js์ ๊ด๋ จ๋ ๊ฐimg-src: ์ด๋ฏธ์ง๋ favicon๊ณผ ๊ด๋ จ๋ ๊ฐdefault-src: directive ๊ธฐ๋ณธ๊ฐ
์์ธํ ๋ด์ฉ์ ์๋๋ฅผ ์ฐธ๊ณ ํ์ธ์:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
๊ฐ ํ์์ ๋ํค ์ค์ ํ ์ ์๋ ๊ฐ ์ค์ ์ ์ด 11๊ฐ ์ ๋๋ค.
ํ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ์๋๋ฅผ ์ฐธ๊ณ ํ์ธ์:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/default-src
'๐จ Dev_BE > ๊ฐ๋ ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Server ] CORS (0) | 2021.09.20 |
---|---|
[ Server ] Cookie vs Session (+JWT) (0) | 2021.09.11 |
[ REST API ] HTTP Methods (0) | 2021.09.11 |