What is CSP?
XSS, ๋ฐ์ดํฐ ์ฝ์ ๋ฑ์ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๊ณ ๊ณต๊ฒฉ์ ๋ณด๊ณ ๋ฐ์ ์ ์๋๋ก ์๋กญ๊ฒ ์ถ๊ฐ๋ ๋ณด์ ๊ณ์ธต ( XSS์ CSP๊ฐ ๋ณํ๋์ด์ผ ํจ )
Basic policy of CSP
1. Inline-code๋ฅผ ์ ํดํ๋ค๊ณ ๊ฐ์ฃผ
Inline-code๋ ํ๊ทธ์ src ์์ฑ์ผ๋ก ์ฝ๋๋ฅผ ๋ก๋ํ์ง ์๊ณ ๋ฐ๋ก ์ฝ์ ํ๋ ์ฝ๋๋ค์ ๋ปํ๋ค. ex) <script>alert(1);</script>
๋ํ on* ์ผ๋ก ์์ํ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ, javascript: ์คํค๋ง๊น์ง ํฌํจ๋๋ค.
2. ํ ์คํธ๋ฅผ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅด ๋ณํํ๋ ๋งค์ปค๋์ฆ์ ์ ํดํ๋ค๊ณ ๊ฐ์ฃผ
ex) eval() , settimeout(), new Function() ๋ฑ
์ง์๋ฌธ. ์ค๋ช
default-src | -src๋ก ๋๋๋ ๋ชจ๋ ๋ฆฌ์์ค์ ๊ธฐ๋ณธ ๋์์ ์ ์ดํฉ๋๋ค. ๋ง์ฝ CSP ๊ตฌ๋ฌธ ๋ด์์ ์ง์ ํ์ง ์์ ์ง์๋ฌธ์ด ์กด์ฌํ๋ค๋ฉด default-src์ ์ ์๋ฅผ ๋ฐ๋ผ๊ฐ๋๋ค. |
img-src | ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ ์ ์๋ ์ถ์ฒ๋ฅผ ์ ์ดํฉ๋๋ค. |
script-src | ์คํฌ๋ฆฝํธ ํ๊ทธ ๊ด๋ จ ๊ถํ๊ณผ ์ถ์ฒ๋ฅผ ์ ์ดํฉ๋๋ค. |
style-src | ์คํ์ผ์ํธ ๊ด๋ จ ๊ถํ๊ณผ ์ถ์ฒ๋ฅผ ์ ์ดํฉ๋๋ค. |
child-src | ํ์ด์ง ๋ด์ ์ฝ์ ๋ ํ๋ ์ ์ปจํ ์ธ ์ ๋ํ ์ถ์ฒ๋ฅผ ์ ์ดํฉ๋๋ค. |
base-uri | ํ์ด์ง์ <base> ํ๊ทธ์ ๋ํ๋ ์ ์๋ URL์ ์ ์ดํฉ๋๋ค. |
CSP Examples
https://learn.dreamhack.io/321#7
CSP ์ทจ์ฝ์ ๋ถ์ ์ฌ์ดํธ
https://csp-evaluator.withgoogle.com/