Я работаю над веб-приложением, чтобы обучать концепциям программирования. На веб-страницах есть текст о концепции программирования, а затем пользователь может ввести код javascript в окно текстового редактора, чтобы попытаться решить проблему программирования. Когда пользователь нажимает «отправить», я анализирую набранный им текст, чтобы увидеть, решили ли они проблему. Например, я прошу их «написать функцию с именем f
, которая добавляет три к своему аргументу».
Вот что я делаю для анализа текста пользователя:
eval (usertext);
eval (условие)
. Пример условия - "f (1) === 4"
. Условия получены из надежного источника. Мои вопросы: достаточно ли этого для предотвращения проблем с безопасностью? Что еще я могу сделать, чтобы стать параноиком? Есть ли лучший способ сделать то, что я хочу?
Если это уместно, мое приложение находится в Google App Engine с бэкэндом Python, использует JQuery, имеет индивидуальные учетные записи пользователей.