๋ถ๋ฅ:ํ๋ก๊ทธ๋๋ฐ
์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ๊ฐ์[ํธ์ง]
์ผ๋ถ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค์์ ์ง์ํ๋ ํจ์์ ์ผ์ข
. ๋ฌธ์์ด๋ก ๋ ํํ์์ ๋ฐ์ ์ฝ๋๋ก ํด์ํ์ฌ ์คํํ๋ ์ญํ ์ ํ๋ค. evaluate์ ์ฝ์๋ก, ๋ฌธ์์ด์ด ์ฝ๋๋ผ๊ณ ๊ฐ์ ํ๊ณ ํ๊ฐํด์ ์คํํ๋ค๋ ์๋ฏธ๋ค. ๋ณดํต ์ด๋ฐ์ด๋ผ๊ณ ์ฝ๋๋ค.
๋น์ทํ ํจ์๋ก exec ๋ฑ์ด ์๋ค.
๋น์ทํ ํจ์๋ก exec ๋ฑ์ด ์๋ค.
2. ์์ธ[ํธ์ง]
eval(expression)์ ํํ๋ก ์ธ ์ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฝ๋๋ฅผ ๋์ ์ผ๋ก ์คํํ๊ธฐ ์ํด ์ฐ์ธ๋ค. C(ํ๋ก๊ทธ๋๋ฐ ์ธ์ด) ๊ฐ์ ์ปดํ์ผ๋ฌ ์ธ์ด์์๋ ์ง์ํ์ง ์๊ณ Perl, JavaScript, Python ๊ฐ์ ์คํฌ๋ฆฝํธ ์ธ์ด์ ์กด์ฌํ๋ค. ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ๊ฐ์ด๋ ํ๋ก๊ทธ๋จ์ด ์๋ํ๋ฉด์ ๋ณํ๋ ๊ฐ์ ๋ฌธ์์ด์ ํํ๋ก ๋ฐ์ํ์ฌ ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐํธํ๋ค.
์คํ๋๋ ๋ชจ์ต์ ๋ณด๊ณ ์ถ๋ค๋ฉด F12 ํค๋ฅผ ๋๋ฌ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ์์ ์ด๊ณ ,
๋ผ๊ณ ํ์ดํํด๋ณด์. ๋น์ ์ด ๋๋ฒ์งธ ์ค์ ์ธ์๋ก ์ ๋ ฅํ ๊ฒ์ ๋ถ๋ช ํ ๋ฌธ์์ด์ด์ง๋ง ์ ์ 2์ ๋ณ์ e ์ฆ ์ ์ 1์ ๋ํ์ฌ 3์ด ์ถ๋ ฅ๋ ๊ฒ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฝ๋๋ฅผ ๋์ ์ผ๋ก ์คํํ๊ธฐ ์ํด ์ฐ์ธ๋ค. C(ํ๋ก๊ทธ๋๋ฐ ์ธ์ด) ๊ฐ์ ์ปดํ์ผ๋ฌ ์ธ์ด์์๋ ์ง์ํ์ง ์๊ณ Perl, JavaScript, Python ๊ฐ์ ์คํฌ๋ฆฝํธ ์ธ์ด์ ์กด์ฌํ๋ค. ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ๊ฐ์ด๋ ํ๋ก๊ทธ๋จ์ด ์๋ํ๋ฉด์ ๋ณํ๋ ๊ฐ์ ๋ฌธ์์ด์ ํํ๋ก ๋ฐ์ํ์ฌ ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐํธํ๋ค.
์คํ๋๋ ๋ชจ์ต์ ๋ณด๊ณ ์ถ๋ค๋ฉด F12 ํค๋ฅผ ๋๋ฌ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ์์ ์ด๊ณ ,
e = 1
eval('2 + e')๋ผ๊ณ ํ์ดํํด๋ณด์. ๋น์ ์ด ๋๋ฒ์งธ ์ค์ ์ธ์๋ก ์ ๋ ฅํ ๊ฒ์ ๋ถ๋ช ํ ๋ฌธ์์ด์ด์ง๋ง ์ ์ 2์ ๋ณ์ e ์ฆ ์ ์ 1์ ๋ํ์ฌ 3์ด ์ถ๋ ฅ๋ ๊ฒ์ด๋ค.
3. eval() is evil[ํธ์ง]
๊ทธ๋ฌ๋ eval์ ์ฌ์ฉ์ ๋ง์ ๊ฒฝ์ฐ์ ๊ธ๊ธฐ์๋๋ค. ์น๋ช
์ ์ธ ๋ณด์ ์ํ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. GOTO๋ฌธ์ ๊ฒฝ์ฐ๋ณด๋ค๋ ์ํํ๋ฐ, GOTO๋ ์๋ฌด๋ฆฌ ์๋ชป ์จ ๋ดค์ ๊ทธ ์ฝ๋๋ฅผ ๋ค์ ํธ์งํ ์ ์๊ฒ ๋ง๋๋ ์ ๋์์ ๊ทธ์น๋ ๋ฐ๋ฉด eval๋ฌธ์ ์๋ชป ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์๋ฅผ ๋ค๋ฉด ๋คํธ์ํฌ ์์์ ๊ฐ์ ธ์จ ๋ฌธ์์ด์ ์คํํ๋ ๊ฒฝ์ฐ ์
์์ ์ผ๋ก ํํ์์ ์์ฑํ ์ฌ๋์ ์ํด ๋ชจ๋ ๋ ๋ฐ์ดํฐ ๋ค ๋ด๊ฑฐ๋ค์ ๋ฑ์ ์ฌํ๊ฐ ์ผ์ด๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
eval๋ง์ผ๋ก ๋์ ์คํ์ ํ์ง ์์ผ๋ ค๊ณ ํ๋ฉด ๋ณด์ ์ํ์ด ์ ์ ๋์ฒดํ์ ์ผ๋ง๋ ์ง ์๋ค. ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์๋ ๋์ ์ผ๋ก ๋ณ์ ๋ฑ์ ์ ํด์ฃผ๋ ํจ์, Python์ด๋ผ๋ฉด setattr๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ์ผ์ด์ง eval๊น์ง ์ฌ์ฉํ ์ด์ ๋ ์๋ค.
eval๋ง์ผ๋ก ๋์ ์คํ์ ํ์ง ์์ผ๋ ค๊ณ ํ๋ฉด ๋ณด์ ์ํ์ด ์ ์ ๋์ฒดํ์ ์ผ๋ง๋ ์ง ์๋ค. ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์๋ ๋์ ์ผ๋ก ๋ณ์ ๋ฑ์ ์ ํด์ฃผ๋ ํจ์, Python์ด๋ผ๋ฉด setattr๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ์ผ์ด์ง eval๊น์ง ์ฌ์ฉํ ์ด์ ๋ ์๋ค.
4. ์ฌ๋ด[ํธ์ง]
๋๋ฌด์ํค๋ Cloudflare๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ https://namu.wiki/w/eval()์ ๋ค์ด๊ฐ๋ฉด ์ฝ๋ ์ธ์ ์
์ผ๋ก ํ๋จ๋์ด ์ฐจ๋จ๋์๋ค๊ณ ๋ฌ ์ ์ด ์๋ค.