node.js: безопасно ли использовать userinput в качестве аргументов командной строки? - PullRequest
0 голосов
/ 30 ноября 2018

Я бы хотел использовать child_process.execFile (file [, args] [, options] [, callback]) (node.js) для вызова определенного приложения на хост-сервере.Аргумент "file" определен мной.Безопасно ли передавать необработанный пользовательский вход в аргумент 'args'?Если нет: как я могу санировать ввод?

1 Ответ

0 голосов
/ 30 ноября 2018

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

Я не уверен, как вы извлекаете пользовательский ввод, но вы должны проанализировать ввод для конкретных аргументов.Например, скажем, вы хотели передать arg, вы должны взять это из пользовательского ввода и передать child_process.execFile(file, arg, ...).

Возможно, вам также следует санировать пользовательский ввод, что можно сделать различными способами, включая использование sanitize library .Путем параметризации входных данных было бы довольно просто санировать, а также ограничивать то, что может быть передано.

=================================================================================

Обновление:

Теоретически, если вам нужно разрешить пользователю передавать что-либо, вы можете запустить действие в некоторой закрытой среде, например, в контейнере.хотя это довольно сложно и, в зависимости от того, насколько сильно человек хочет получить доступ к вашей системе, имеет довольно высокие шансы получить удар.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...