๋ด ๋ฐ์ดํฐ ๊ฐ์ฒด ์ค ์ผ๋ถ๋ "<" ๋ฐ ">" ๋ก ๋๋ฌ์ธ์ธ ์ผ๋ฐ ํ๊ทธ์ ํจ๊ป ์ค๋น๋ HTML์ ์ฌ์ฉํฉ๋๋ค. Mustache.js๋ ์ด๊ฒ์ <
๋ฐ >
ํฉ๋๋ค. ๊ฒฐ๊ณผ ์ถ๋ ฅ์ String.replace(/>/g,'>').replace(/</g,'<')
๋ฅผ ์ํํ๋ฉด ๋ง์ ์ง์ฐ์ด ๋ฐ์ํฉ๋๋ค.
์ด๊ฒ์ ์์๋ ๋์์ ๋๊น? < ๋ฐ >๋ฅผ ๋ณด์กดํ๊ธฐ ์ํด ๋ณ๊ฒฝํ ์ ์์ต๋๊น? ์ด ๊ธฐํธ๋ฅผ ์ด๋ป๊ฒ๋ ์ด์ค์ผ์ดํํด์ผ ํฉ๋๊น?
{{data}}
(์ด์ค ์ฝง์์ผ)๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ฉด ํญ์ html ๋ฌธ์๊ฐ ์ด์ค์ผ์ดํ๋ฉ๋๋ค. ํ์ถ์ ์ํ์ง ์์ผ๋ฉด {{{data}}}
(์ผ์ค ์ฝง์์ผ)์ ์ฌ์ฉํ์ญ์์ค.
์ค, ๋ฉ์ง๋ค! ๋๋ ๊ทธ๊ฒ์ ๋ชฐ๋๋ค. ๊ณ ๋ง์, ๋ํผ.
@amper5and : {{{ data }}}
๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ XSS ๋๋ CSRF ์ทจ์ฝ์ ์ ์์ฑํ์ง ์๋๋ก ํ๋ ๊ฒ์ _๋น์ ์_ ์ฑ
์์
๋๋ค.
๋ํ {{&data}}
๊ตฌ๋ฌธ์ ์ฌ์ฉํด๋ณธ ์ ์ด ์์ง๋ง ๋์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฉ์ง๋ค๐!!!!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
{{data}}
(์ด์ค ์ฝง์์ผ)๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ฉด ํญ์ html ๋ฌธ์๊ฐ ์ด์ค์ผ์ดํ๋ฉ๋๋ค. ํ์ถ์ ์ํ์ง ์์ผ๋ฉด{{{data}}}
(์ผ์ค ์ฝง์์ผ)์ ์ฌ์ฉํ์ญ์์ค.