Biblioteca cliente Azure Core Process para JavaScript - versão 1.0.0

@azure/core-process fornece Node.js primitivas que lançam processos e que evitam análise sintática ambiente de shell. Ele é destinado a pacotes e ferramentas do SDK do Azure que precisam invocar executáveis externos no Windows, macOS ou Linux.

Introdução

Instalar o pacote

npm install @azure/core-process

Pré-requisitos

Conceitos principais

Comandos e argumentos são sempre fornecidos separadamente. O pacote não fornece uma API de strings de comando e não permite que os chamadores habilitem um shell.

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

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

No Windows, nativo .exe e .com arquivos são preferidos. Arquivos batch são desativados por padrão porque argumentos arbitrários não podem ser transportados com segurança por todos .cmd os envelopes de OR .bat . Um chamador que espera um batch shim pode optar pelo caminho restrito do lote:

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

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

O caminho restrito em lote rejeita operadores de comando, expansão variável, novas linhas e outros valores que não podem ser comprovados como seguros antes cmd.exe do início. Se uma aplicação precisar passar esses valores, ela deve invocar diretamente um executável nativo ou um ponto de entrada de interpretador.

Limite de segurança

Este pacote impede que dados de linha de comando sejam interpretados por um shell ambiente de sistema operacional. Não estabelece que um executável encontrado em PATH seja confiável, não limpa o código intencionalmente passado para um interpretador, nem impede a injeção de opções específicas de comando.

Não coloque segredos em argumentos de linha de comando. Argumentos de processo podem ser visíveis para outros processos locais e diagnósticos do sistema operacional.

Solução de problemas

Um argumento inseguro do Windows em lote falha com um ProcessError antes que o processo filho seja criado. Prefira um executável nativo quando o argumento não pode ser alterado.

Contributing

Veja o guia de contribuições.