Azure Core Process client library for JavaScript - version 1.0.0

@azure/core-process アンビエントシェル解析を回避する Node.js プロセス起動プリミティブを提供します。 これは、Windows、macOS、Linux上で外部実行ファイルを呼び出す必要があるAzure SDKパッケージやツール向けに設計されています。

作業の開始

パッケージをインストールする

npm install @azure/core-process

前提条件

主な概念

コマンドと引数は常に別々に提供されます。 このパッケージはコマンド文字列APIを提供しておらず、呼び出し元がシェルを有効にすることもできません。

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

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

Windowsでは、ネイティブの.exeファイルや.comファイルが優先されます。 バッチファイルはデフォルトで無効化されています。なぜなら、任意の引数をすべての .cmd ラッパーやすべてのラッパーに安全に転送できないからです .bat 。 バッチシムを期待する発信者は、制限付きバッチパスにオプト参加できます:

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

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

制限付きバッチパスはコマンド演算子、変数展開、改行、その他安全を証明できない値を cmd.exe 却します。 アプリケーションがこれらの値を渡す必要がある場合、ネイティブの実行ファイルやインタプリタのエントリポイントを直接呼び出さなければなりません。

セキュリティ境界

このパッケージは、アンビエントオペレーティングシステムシェルによるコマンドラインデータの解釈を防ぎます。 PATH上で見つかった実行ファイルが信頼できるかどうか、意図的にインタプリタに渡されたコードをサニタイズするもの、コマンド固有のオプション注入を阻止するものではありません。

コマンドラインの引数に秘密を置かないでください。 プロセスの引数は他のローカルプロセスやオペレーティングシステムの診断にも見えることがあります。

トラブルシューティング

安全でないWindowsバッチ引数は、子プロセスが作成される前にProcessErrorで失敗します。 引数が変更できない場合はネイティブ実行ファイルを好む。

Contributing

稿ガイドをご覧ください。