Как jsFiddle разрешает и выполняет пользовательский JavaScript, не будучи опасным? - PullRequest
22 голосов
/ 04 ноября 2011

Я работал над библиотекой JS и хотел бы установить демонстрационную страницу на Github, которая позволяет, например, пользователям определять свои собственные функции обратного вызова и выполнять команды.

Я знаю, "eval() - это зло", и я вижу, как слепые eval() скриптов могут привести к XSS и другим проблемам безопасности. Я пытаюсь придумать несколько альтернативных схем.

Мне очень нравится интерактивность jsFiddle. Я взглянул на их источник, но надеялся, что кто-нибудь сможет изложить здесь, как jsFiddle позволяет и выполняет пользовательский JavaScript, не будучи опасным. Пока он не использует сторонний эхо-сервер, я надеюсь, что смогу эмулировать подход.

1 Ответ

27 голосов
/ 04 ноября 2011

jsFiddle выполняет пользовательские сценарии в отдельном домене, http://fiddle.jshell.net ( попробуйте и посмотрите ).
Следовательно, он не может взаимодействовать с родительским фреймом и не может украсть куки.

На самом деле вы можете сделать это без отдельного сервера, поместив статическую страницу в отдельный домен, который читает его строку запроса в Javascript.
Вы можете общаться обратно, используя заголовок страницы (как и враг).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...