В моей программе есть действительно полезная функция (написанная на Java), которая позволяет пользователю оценивать JavaScript функции и выражения. Это действительно полезно для быстрой математики и в тех случаях, когда вам просто нужно набрать l oop.
. Однако я пришел к выводу, что существует бесконечная возможность для атаки с внедрением кода: ввод exit()
приведет к выходу из целого программа, например. И поскольку он запускает сервер JS, это ОГРОМНАЯ проблема.
Это моя функция (java код):
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
try {
this.send(engine.eval(message /*user javascript*/).toString());
} catch (ScriptException e) {
this.send("[ERROR] the expression was invalid and caused an exception. See the console for more details.");
e.printStackTrace();
}
Есть ли способ настроить это так что движок javascript не может получить доступ к таким функциям? Действительно удобно иметь возможность определять простую функцию без необходимости go и, например, открывать интерпретатор python, поэтому важно, чтобы у меня была эта небезопасная функция.