์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
1. ๊ฐœ์š”2. ์ƒ์„ธ3. eval() is evil4. ์—ฌ๋‹ด

1. ๊ฐœ์š”[ํŽธ์ง‘]

์ผ๋ถ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค์—์„œ ์ง€์›ํ•˜๋Š” ํ•จ์ˆ˜์˜ ์ผ์ข…. ๋ฌธ์ž์—ด๋กœ ๋œ ํ‘œํ˜„์‹์„ ๋ฐ›์•„ ์ฝ”๋“œ๋กœ ํ•ด์„ํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. evaluate์˜ ์•ฝ์ž๋กœ, ๋ฌธ์ž์—ด์ด ์ฝ”๋“œ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ํ‰๊ฐ€ํ•ด์„œ ์‹คํ–‰ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋‹ค. ๋ณดํ†ต ์ด๋ฐœ์ด๋ผ๊ณ  ์ฝ๋Š”๋‹ค.

๋น„์Šทํ•œ ํ•จ์ˆ˜๋กœ exec ๋“ฑ์ด ์žˆ๋‹ค.

2. ์ƒ์„ธ[ํŽธ์ง‘]

eval(expression)์˜ ํ˜•ํƒœ๋กœ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋™์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์“ฐ์ธ๋‹ค. 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๊นŒ์ง€ ์‚ฌ์šฉํ•  ์ด์œ ๋Š” ์—†๋‹ค.

4. ์—ฌ๋‹ด[ํŽธ์ง‘]

๋‚˜๋ฌด์œ„ํ‚ค๋Š” Cloudflare๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— https://namu.wiki/w/eval()์— ๋“ค์–ด๊ฐ€๋ฉด ์ฝ”๋“œ ์ธ์ ์…˜์œผ๋กœ ํŒ๋‹จ๋˜์–ด ์ฐจ๋‹จ๋˜์—ˆ๋‹ค๊ณ  ๋œฌ ์ ์ด ์žˆ๋‹ค.