Какой самый безопасный способ разрешить выполнение JavaScript, написанного на клиенте, на сервере? - PullRequest
0 голосов
/ 11 октября 2018

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

Редактировать (подробнее) :

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

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

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Идея:

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

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

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

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

0 голосов
/ 11 октября 2018

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

...