Какой самый безопасный способ разрешить выполнение JavaScript, написанного на клиенте, на сервере?

Я хотел бы позволить нашим пользователям писать логику синтаксического анализа строк в JavaScript, которая затем будет выполняться на сервере.

Изменить (подробнее):

  • Regex не вариант, так как они будут нужны if, else, switch так далее
  • Я хотел бы избежать создания собственного языка
  • Идея в том, что если пользователь знает JS, он может написать собственную логику.

Я посмотрел " Остановка бесконечных циклов" с помощью CodePen, где они генерируют абстрактное синтаксическое дерево с использованием Esprima, а затем восстанавливают JavaScript, который мы используем Escodegen. Что меня беспокоит, так это то, что кто-то еще может внедрить какой-нибудь хакер Unicode.

2 ответа

Самый безопасный способ - создать собственный синтаксический анализатор / интерпретатор для некоторого подмножества javascript (или любого другого языка сценариев) или для своего собственного домена. Это большая работа, но все же намного проще и безопаснее, чем поддерживать изолированную виртуальную машину javascript на сервере и взаимодействовать с ней.

Идея:

  1. пользователи пишут свои пользовательские функции на веб-странице

  2. веб-страница получает данные с сервера

  3. пользовательская функция применяется к данным на стороне клиента

  4. результаты отправляются обратно на сервер (убедитесь, что результаты не скомпрометированы)

Другие вопросы по тегам