mirror of
https://github.com/goldbergyoni/nodebestpractices.git
synced 2025-11-02 19:18:34 +08:00
childprocesses
Signed-off-by: Alexander Ivanov <oshli.a.er@gmail.com>
This commit is contained in:
@ -956,7 +956,7 @@ null == undefined // true
|
|||||||
|
|
||||||
**Иначе:** Наивное использование дочерних процессов может привести к удаленному выполнению команды или атакам внедрения оболочки из-за того, что злонамеренный пользовательский ввод передан неантизированной системной команде.
|
**Иначе:** Наивное использование дочерних процессов может привести к удаленному выполнению команды или атакам внедрения оболочки из-за того, что злонамеренный пользовательский ввод передан неантизированной системной команде.
|
||||||
|
|
||||||
🔗 [**Подробнее: Будьте осторожны при работе с дочерними процессами**](/sections/security/childprocesses.md)
|
🔗 [**Подробнее: Будьте осторожны при работе с дочерними процессами**](/sections/security/childprocesses.russian.md)
|
||||||
|
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
|
|
||||||
|
|||||||
30
sections/security/childprocesses.russian.md
Normal file
30
sections/security/childprocesses.russian.md
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Будьте осторожны при работе с дочерними процессами
|
||||||
|
|
||||||
|
### Объяснение в один абзац
|
||||||
|
|
||||||
|
Как бы ни были хороши дочерние процессы, их следует использовать с осторожностью. Передача пользовательского ввода должна быть очищена, если не предотвращена вообще.
|
||||||
|
Опасности несанкционированного ввода, выполняющего системную логику, безграничны, начиная от удаленного выполнения кода и заканчивая раскрытием конфиденциальных системных данных и даже потерей данных. Контрольный список препаратов может выглядеть так
|
||||||
|
|
||||||
|
- избегайте ввода пользователя в каждом случае, в противном случае проверьте и очистите его
|
||||||
|
- ограничьте права родительского и дочернего процессов, используя идентификаторы пользователя/группы
|
||||||
|
- запустить процесс внутри изолированной среды, чтобы предотвратить нежелательные побочные эффекты, если другие препараты не сработают
|
||||||
|
|
||||||
|
### Пример кода: опасность выполнения несанированных дочерних процессов
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
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 [документации](https://nodejs.org/dist/latest-v8.x/docs/api/child_process.html#child_process_child_process_exec_command_options_callback):
|
||||||
|
|
||||||
|
> Никогда не передавайте необработанный пользовательский ввод в эту функцию. Любой ввод, содержащий метасимволы оболочки, может использоваться для запуска выполнения произвольной команды.
|
||||||
Reference in New Issue
Block a user