Azure Core Process biblioteka klienta dla JavaScript - wersja 1.0.0

@azure/core-process zapewnia Node.js prymitywy uruchamiające procesy, które unikają parsowania powłoki otoczenia. Jest przeznaczony dla pakietów i narzędzi Azure SDK, które muszą wywoływać zewnętrzne pliki wykonywalne na Windows, macOS lub Linux.

Wprowadzenie

Instalowanie pakietu

npm install @azure/core-process

Wymagania wstępne

Kluczowe pojęcia

Polecenia i argumenty są zawsze podawane osobno. Pakiet nie zapewnia API dla łańcuchów poleceń i nie pozwala wywołującym na włączenie powłoki.

import { execFile } from "@azure/core-process";

const { stdout } = await execFile("git", ["rev-parse", "--show-toplevel"]);
console.log(stdout);

Na Windows preferowane są natywne .exe i .com pliki. Pliki wsadowe są domyślnie wyłączone, ponieważ dowolne argumenty nie mogą być bezpiecznie przesyłane przez każdy .cmd.bat lub wrapper. Dzwoniący, który spodziewa się podkładki wsadowej, może wybrać ścieżkę ograniczonej wsadowej:

import { execFile } from "@azure/core-process";

const { stdout } = await execFile("npm", ["--version"], {
  allowWindowsBatchFiles: true,
});
console.log(stdout);

Ścieżka wsadowa z ograniczonym zakresem odrzuca operatory poleceń, rozszerzanie zmiennych, nowe linie i inne wartości, których nie można udowodnić przed cmd.exe rozpoczęciem działalności. Jeśli aplikacja musi przekazać te wartości, musi bezpośrednio wywołać natywny plik wykonywalny lub punkt wejściowy interpretera.

Granica zabezpieczeń

Ten pakiet zapobiega interpretacji danych wiersza poleceń przez otaczającą powłokę systemu operacyjnego. Nie ustali, że plik wykonywalny znaleziony na jest PATH godny zaufania, nie oczyszcza kodu celowo przekazanego interpreterowi ani nie zapobiega wstrzykiwaniu opcji specyficznych dla poleceń.

Nie umieszczaj sekretów w argumentach wiersza poleceń. Argumenty procesów mogą być widoczne dla innych lokalnych procesów i diagnostyki systemu operacyjnego.

Rozwiązywanie problemów

Niebezpieczny argument wsadowy Windows kończy się niepowodzeniem przed ProcessError utworzeniem procesu potomnego. Wolę natywny plik wykonywalny, gdy argument nie może być zmieniony.

Contributing

Zobacz przewodnik po wkładzie w artykuł.