์๋
ํ์ธ์,
CSP๋ฅผ ์ ๋๋ก ์ดํดํ์ง ๋ชปํด์ etherpad ์ธ์คํด์ค์ ๋ง๋ CSP ๊ตฌ์ฑ์ ๊ตฌ์ฑํ์ง ๋ชปํ์ต๋๋ค. Etherpad๋ฅผ ๊ณ์ ์๋์ํค๋ฉด์ ๋ณด์์ ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ๋ํ ์๋ฅผ ๋ค์ด์ค ์ ์๋ ์ฌ๋์ด ์์ต๋๊น?
์ด๋ฌํ ์์ ๊ฐ ์ถ๊ฐ๋๋ฉด ๋ฌธ์ํ๋ฅผ ๊ฐ์ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ๋ง ๊ฐ์ฌํฉ๋๋ค.
Video.etherpad.com์ ๋ํ ์ฐธ๊ณ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฐ๋จํ npm install ep_helmet
๋๋ ํ๋ฌ๊ทธ์ธ ์ค์น UI๋ฅผ ํตํด ep_helmet
๋ฅผ ์ค์น ํ๋ฉด Observatory https://observatory.mozilla.org/analyze/video.etherpad.com
๋ฌธ์ ์ ๋ฒ์๋ "CSP ํค๋๊ฐ ๋ฌด์์ธ์ง"์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ๋ ์ฝ๊ฐ ์ ํ๊ณ ๊ณต๊ฒฉ์๊ฐ ์ฌ์ฉํ ์ ์๋ ํค๋ ๊ด๋ จ ์ต์คํ๋ก์์ ๋ ๋ง์ด ๋ค๋ฃจ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ด๊ฒ์ ๊ด๋ฆฌ์์๊ฒ ๋ณด์์ ๊ฐํํ๊ธฐ ์ํ "์ ํด๋ฆญ" ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
์ด๊ฒ์ ์์ง ์ฌ๋ฐ๋ฅธ CSP ํค๋์ ๋ํ ์ง๋ฌธ์ "์์ "ํ์ง ์์ต๋๋ค. CSP๋ ์ผ๋ฐ์ ์ผ๋ก ์ธ๋ผ์ธ JS๊ฐ ๋๋ฌด ๋ง๊ธฐ ๋๋ฌธ์ Etherpad์์ ๊ตฌํํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ์ ์ฅ. ๊ทธ๋ฆฌ๊ณ ๋์ ์ด๋ฏ๋ก nonce ์ ๊ทผ ๋ฐฉ์์ ์ทจํด์ผ ํ๋ฉฐ ์ด๋ ๋ง์ ํ์ผ์ ๋ง์ง๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๊ฐ๋ฅํ์ง์กฐ์ฐจ ํ์ ํ์ง ๋ชปํ์ง๋ง ๋๋ ๋ช ์๊ฐ์ ๋ ๋ณด๋ด๊ณ ๋ด๊ฐ ์ด๋๋ก ๊ฐ๋์ง ๋ณด๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค. html ํ์ผ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฎ๊ฒจ์ผ ํ๋ค๊ณ ํ์ธํ๋ ๊ฒฝ์ฐ์๋ ๋ ธ๋ ฅํ ๊ฐ์น๊ฐ ์์ต๋๋ค. Imho unsafe-eval ๋ฐ unsafe-inline์ ํด๊ฒฐํ๋ ค๋ ๋ ธ๋ ฅ์ ๊ฐ์น๊ฐ ์๋ 2๊ฐ์ง ๊ฐ์ฅ ํฐ ๋ฒกํฐ์ ๋๋ค. ์๋ง๋ ๋ด์ผ..
์ข์ต๋๋ค. ์ด์ CSP์ ๋ํ ๋ณํฉ ์์ฒญ์ด ์์ผ๋ฉฐ ์ ๋ฐ์ดํธ๋ ํฌ๋ฉง์ ๊ฒ์ํ๊ฒ ์ต๋๋ค.
@muxator ์์ ๊ฒํ ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
๋ด ์์ btw์ ๋ํ ๋ด ๊ด์ฌ์ฌ๋ ํ๋ฌ๊ทธ์ธ์ด ์ข ์ข ์ธ๋ผ์ธ js๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ด๋ฏ๋ก ์๊ฒฉํ csp ์ ์ฑ ์ ํ์ฑํํ๋ฉด ์ผ๋ถ ํ๋ฌ๊ทธ์ธ์ด ์๋ํ์ง ์์ ๊ฒ์ ๋๋ค
์ค๋ ์ฌ์ํ์ต๋๋ค. ์ด PR์ ๋๋ฌด ๊ด๋ จ๋์ด ์์ผ๋ฏ๋ก ์ง์ ๋ณํฉํ๊ณ ์ถ์ง ์์ต๋๋ค.
PR์ nonce๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. inlineJS ๋ฌธ์ ๋ฅผ ์์ ํ๋ ๋ฐ๋ ์ข์ง ์์ง๋ง ๋๋ถ๋ถ์ ๊ฒฝ์ฐ npm install ep_helmet
๊ฐ ํ๋ฃจ๋ฅผ ์ ์ฝํฉ๋๋ค. :)
์ด ๋ฌธ์ ๋ ์ต๊ทผ ํ๋์ด ์์๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ์ค๋๋ ๊ฒ์ผ๋ก ํ์๋์์ต๋๋ค. ๋ ์ด์ ํ๋์ด ์์ผ๋ฉด ํ์๋ฉ๋๋ค. ๊ทํ์ ๊ธฐ์ฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.