Я пишу приложение, в котором пользователь может предоставить пользовательский Javascript функция фильтрации файлов на стороне сервера с помощью Насхорн/JJS:Nashorn/JJS безопасности: выполнение сценария пользователя на стороне сервера
cat /etc/js/library.js user.js > tmp.js &&
cat /path/to/input.txt | jjs --language=es6 -doe -J-Djava.security.manager tmp.js > /path/to/output.txt &&
rm tmp.js
Я знаю, что пользователь может написать бесконечный цикл, чтобы заполнить мой диск:
for(;;) print("#####);
Но -J-Djava.security.manager
достаточно, чтобы предотвратить его для чтения/записи файла в файловой системе?
Спасибо.
Спасибо, но не это парадоксальное, что JJS все еще в состоянии читать файл сценария 'tmp.js'? (или активируется безопасность после * чтения этого js-файла?) – Pierre
Нет, сам код jjs предоставляется по умолчанию для политики AllPermission. Это код jjs, который считывает начальный набор файлов, указанных в командной строке, и поэтому он согласован. Если ваш сценарий вызывает «load» примитив для загрузки дополнительных скриптов, также будут вступать в силу разрешения безопасности вашего сценария (сценарий загрузки). –