2013-06-10 8 views
1

Я работаю над игрой HTML5, и в качестве одной из функций я хотел бы, чтобы более продвинутые пользователи могли писать короткие скрипты в javascript, которые могут запускаться объектами в игре. Проблема в том, что я хотел бы ограничить то, что скрипты игрока могут сделать, чтобы они не могли открывать новые окна, обманывать, изменять характер игры и т. Д. Однако я хотел бы разоблачить определенные методы для скриптов они могут делать полезные вещи.Каков наилучший способ защитить среду javascript?

Несколько человек предложили мне сделать это с помощью веб-работников. Другие сказали мне, что мне нужно построить интерпретатор внутри javascript для этого. Очевидно, я не могу просто использовать eval, так как я могу это сделать и что будет лучшим способом, если есть «лучший» способ?

+1

Возможно, вам это сопутствует: [Сделать песочницу вокруг функции() в Javascript] (http://stackoverflow.com/q/11869582/218196). –

+0

, который будет запускать эти сценарии: только один пользователь или более одного? – dandavis

+0

dandavis. Некоторые группы игроков могут запускать определенные скрипты. Я бы хотел, чтобы все это было интероперабельным. –

ответ

1

Вам не нужно создавать песочницу, Javascript уже сделал это для вас.

Если вы создадите iframe внутри своей страницы, то iframe будет иметь собственную среду javascript, которая отделена от исходной страницы. Затем вы можете использовать межкадровую связь html5 для отправки сообщений туда и обратно. IFrame будет запускать пользовательскую программу и отправлять ответы на хост для оценки. Вы не должны доверять тому, что возвращается из iframe, и отбрасывать все, что выходит за рамки.

+0

Отлично, это решает все мои проблемы. –

Смежные вопросы