Нет, это совсем не безопасно.Пользователь может интеллектуально завершить команду и выполнить отдельную команду, и, в зависимости от уровня разрешений, на котором работает приложение вашего узла, сможет сделать кучу вещей.
Я не уверен, как вы извлекаете пользовательский ввод, но вы должны проанализировать ввод для конкретных аргументов.Например, скажем, вы хотели передать arg
, вы должны взять это из пользовательского ввода и передать child_process.execFile(file, arg, ...)
.
Возможно, вам также следует санировать пользовательский ввод, что можно сделать различными способами, включая использование sanitize library .Путем параметризации входных данных было бы довольно просто санировать, а также ограничивать то, что может быть передано.
=================================================================================
Обновление:
Теоретически, если вам нужно разрешить пользователю передавать что-либо, вы можете запустить действие в некоторой закрытой среде, например, в контейнере.хотя это довольно сложно и, в зависимости от того, насколько сильно человек хочет получить доступ к вашей системе, имеет довольно высокие шансы получить удар.