Нодейс в песочнице - PullRequest
       0

Нодейс в песочнице

3 голосов
/ 21 апреля 2011

Я использую nodejs в качестве посредника между клиентским браузером и сервером для обработки всех запросов.Я пытаюсь использовать nodejs как инструмент фильтрации и выделить (если нет) все вредоносные скрипты.Но я понимаю, что nodejs позволяет сценарию работать с текущей привилегией среды.Поэтому я решил запустить его в новом контексте, установив песочницу (npm install sandbox или git clone git://github.com/gf3/sandbox.git).Однако, когда я запускаю узел, у меня появляется следующая ошибка:

TypeError: Невозможно вызвать метод \ 'runInNewContext \' undefined '

Есть какие-нибудь идеи?

Ответы [ 2 ]

3 голосов
/ 21 апреля 2011

Посмотрели ли вы встроенные возможности песочницы узла 0.4.6 .

var localVar = 123,
    usingscript, evaled,
    vm = require('vm');

usingscript = vm.runInThisContext('localVar = 1;',
  'myfile.vm');
console.log('localVar: ' + localVar + ', usingscript: ' +
  usingscript);
evaled = eval('localVar = 1;');
console.log('localVar: ' + localVar + ', evaled: ' +
  evaled);

// localVar: 123, usingscript: 1
// localVar: 1, evaled: 1
0 голосов
/ 18 октября 2016

Я никогда не использовал его, но, очевидно, для этого есть модуль npm: sandbox:

Изящная песочница javascript для node.js

Некоторые функции

  • Может использоваться для выполнения ненадежного кода.
  • Поддержка тайм-аутов (например, предотвращение бесконечных циклов)
  • Поддержка ошибок памяти (иошибки памяти)
  • Изящно обрабатывает ошибки
  • Ограниченный код (не может получить доступ к методам node.js)
  • Поддерживает методы console.log и утилиты печати
  • Поддерживает межпроцессобмен сообщениями с изолированным кодом

Это , на который ссылается в отчете об ошибке в runThisInContext, указывающем, что это не безопасно упомянутый broofa в комментарии к другому ответу, говорящему использовать runThisInContext.

...