Skip to content

Latest commit

 

History

History
30 lines (19 loc) · 2.57 KB

childprocesses.russian.md

File metadata and controls

30 lines (19 loc) · 2.57 KB

Будьте осторожны при работе с дочерними процессами

Объяснение в один абзац

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

  • избегайте ввода пользователя в каждом случае, в противном случае проверьте и очистите его
  • ограничьте права родительского и дочернего процессов, используя идентификаторы пользователя/группы
  • запустить процесс внутри изолированной среды, чтобы предотвратить нежелательные побочные эффекты, если другие препараты не сработают

Пример кода: опасность выполнения несанированных дочерних процессов

const { exec } = require('child_process');

...

// as an example, take a script that takes two arguments, one of them is unsanitized user input
exec('"/path/to/test file/someScript.sh" --someOption ' + input);

// -> imagine what could happen if the user simply enters something like '&& rm -rf --no-preserve-root /'
// you'd be in for an unwanted surprise

Дополнительные ресурсы

Из Node.js документации:

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