๋๋๋ก !important๊ฐ ํฌํจ๋ ์ธ๋ผ์ธ ์คํ์ผ์ ํฌํจํ๋ cms์์ html ํ๊ทธ๋ฅผ ์ป๋ ๋ถํํ ์ํฉ์ด ์์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ React ์ฑ์์ ๋ ๋๋งํด์ผ ํฉ๋๋ค.
๊ทธ๊ฒ์ ๋ํด ๋ด๊ฐ ํ ์ ์๋ ์ผ์ ์์ผ๋ฉฐ !important๊ฐ ์ฒจ๋ถ๋ ๋ชจ๋ ์คํ์ผ์ React์ ์ํด ์ ๊ฑฐ๋ฉ๋๋ค.
html-react-parser๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์คํ์ผ์ ์ ์งํ์ฌ ๋ณธ๋ฌธ์ ๋จ๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ฌ๊ธฐ์ ๋ํด ์ง๋ฌธํ ์ ์ ํ ์ฅ์๊ฐ ์๋๋ผ๋ฉด ์ฃ์กํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์ด ๋ฌธ์ ๋ฅผ ์ข
๋ฃํด ์ฃผ์ธ์.
๊ฐ์ฌ!
@linkurzweg html-react-parser
ํ์ํ์ง ์์ ์ ์์ต๋๋ค. ๋ฐ์ด์ฌ๋ฆฐ์ ์ฐธ์กฐํ์ญ์์ค. ์ํํ๊ฒ SetInnerHTML์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ XSS ์ทจ์ฝ์ ์ ์ฃผ์ํ์ญ์์ค.
@remarkablemark ์, ์ํํ๊ฒ
์ ๊ฒฝ์ฐ์๋ XSS์ ๋ํ ์ค์ ์ํ์ด ์์ผ๋ฏ๋ก ๊ด์ฐฎ์ต๋๋ค.
๋ฌธ์ ๋ ๋ณธ๋ฌธ์ ์ผ๋ถ React ๊ตฌ์ฑ ์์๋ก ๋์ฒดํด์ผ ํ๋ ์์๊ฐ ํฌํจ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ ํ html-react-parser๋ฅผ ํตํด ๋ชจ๋ ๊ฒ์ ์คํํด์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. ์์์ ์คํ์ผ ์์ฑ์ด ์๋ ๊ฒฝ์ฐ์๋ง ๊ทธ๋๋ก ๋ ๋๋งํ ์ ์์ต๋๋ค.
๊ตฌ๋ฌธ ๋ถ์ํ ๋ domNode๋ฅผ ๋ฌธ์์ด๋ก ๋ค์ ๋ณํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋งค์ฐ ๊ฐ์ฌํฉ๋๋ค!
@linkurzweg domToReact()
domNode๋ฅผ ์ ๋ฌํ ์ ์์ผ๋ฉฐ React ์์๋ก ๋ ๋๋ง๋ฉ๋๋ค. ๊ต์ฒด ์๋ฅผ ์ฐธ์กฐ
@remarkablemark ๋ค์ ํ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ๋๋ ๊ทธ๊ฒ์ ์๊ณ ์์ง๋ง ๊ทธ๊ฒ์ด ๋ด ๊ฒฝ์ฐ์ ์ด๋ป๊ฒ ๋์์ด ๋ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๊น?
์ฌ์ ํ domNode๋ฅผrisklySetInnerHTML๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ๋ฌธ์์ด๋ก ๋๋๋ ค์ผ ํฉ๋๋ค. ์๋๋ฉด ๋ญ๊ฐ๋ฅผ ์ป์ง ๋ชปํ๊ณ ์์ต๋๊น?
@linkurzweg ๋๋ ๋น์ ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด์ง ์์ต๋๋ค. CodeSandbox , JSFiddle ๋๋ Repl.it์ ์ฌ์ฉํ์ฌ ์์ ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น?
@remarkablemark ์ฌ๊ธฐ์์ ๋ฐ์ด์ฌ๋ฆฐ์ ์ฐธ์กฐํ์ธ์: https://jsfiddle.net/9bezs1rt/.
๊ทธ๋์, ๊ทธ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ชจ๋ html์ด ํฌํจ๋ ํ๋์ ๊ฑฐ๋ํ ๋ฌธ์์ด์ ์ป์์ต๋๋ค. ์ด ๋ฌธ์์ด์ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ๊ตฌ๋ฌธ ๋ถ์ํด์ผ ํฉ๋๋ค(์คํฌ๋ฆฝํธ ํ๊ทธ, iframe, ์์
๋ฏธ๋์ด ํฌํจ ๋ฑ์ ํฌํจํ ์ ์์). ๋ชจ๋ dom ๋
ธ๋๋ฅผ ๋ฐ๋ณตํ๊ณ ๋ค์ํ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
dom ๋ ธ๋์ ์ผ๋ถ ์ธ๋ผ์ธ ์คํ์ผ์ด ์ฐ๊ฒฐ๋์ด ์๋ ๊ฒฝ์ฐ ์ผ๋ถ React ๊ตฌ์ฑ ์์๋ก ๊ต์ฒดํ ํ์๊ฐ ์๋ค๊ณ ๊ฐ์ ํ ์ ์์ผ๋ฉฐ !important๊ฐ ์๋ ์คํ์ผ์ ํฌํจํ์ฌ ์ ๋ฌํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ถํํ๋ ๊ทธ๋ค์ ๊ธธ์ ์์ต๋๋ค.
@linkurzweg ๋ฐ์ด์ฌ๋ฆฐ์ ๋ง๋ค์ด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๋ฐ๋ผ์ ์คํ์ผ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋ ๋๋ง๋์ง ์๋ ์ด์ ๋ ์ธ๋ผ์ธ ์คํ์ผ์ !important
๊ฐ ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค.
!important
์ ๊ฑฐํ ํ ๋นจ๊ฐ์ ํ
๋๋ฆฌ๋ฅผ ํ์ํ์ต๋๋ค. ์
๋ฐ์ดํธ๋ ๋ฐ์ด์ฌ๋ฆฐ์ ์ฐธ์กฐํ์ญ์์ค.
@remarkablemark ๋ฌผ๋ก , ๋ฐ๋ณด์ผ! ์ธ๋ผ์ธ ์คํ์ผ๊ณผ ์ถฉ๋ํ ์ ์๋ html ๋ฌธ์์ด ๋ด๋ถ์ !important๊ฐ ์๋ ๋ค๋ฅธ ์คํ์ผ ํ๊ทธ๊ฐ ์์ ์ ์์ต๋๋ค(๋ชจ๋ ๋งค์ฐ ์ง์ ๋ถํฉ๋๋ค). ํ์ง๋ง !important๋ ์ ๊ฑฐํ ์ ์์ผ๋ฏ๋ก ๊ด์ฐฎ์ต๋๋ค. :D ์ด๊ฒ๊ณผ ๋์์ ์ฃผ์ ์ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค!