diff --git a/src/Command/CommandHelper.php b/src/Command/CommandHelper.php index 612d1ed762..aa8a2a2210 100644 --- a/src/Command/CommandHelper.php +++ b/src/Command/CommandHelper.php @@ -48,7 +48,6 @@ use function error_get_last; use function get_class; use function getcwd; -use function getenv; use function gettype; use function implode; use function ini_get; @@ -270,7 +269,7 @@ public static function begin( $defaultParameters = [ 'rootDir' => $containerFactory->getRootDirectory(), 'currentWorkingDirectory' => $containerFactory->getCurrentWorkingDirectory(), - 'env' => getenv(), + 'env' => Environment::getCleanedArray(), ]; if (isset($projectConfig['parameters']['tmpDir'])) { diff --git a/src/Command/Environment.php b/src/Command/Environment.php new file mode 100644 index 0000000000..c7e0b87c2d --- /dev/null +++ b/src/Command/Environment.php @@ -0,0 +1,36 @@ + + */ + public static function getCleanedArray(): array + { + $env = getenv(); + $cleanedArray = []; + foreach ($env as $name => $value) { + if (in_array($name, self::SENSITIVE_ENV_VARIABLES, true)) { + continue; + } + $cleanedArray[$name] = $value; + } + return $cleanedArray; + } + +} diff --git a/src/Command/FixerApplication.php b/src/Command/FixerApplication.php index d0deb1607a..423d0f01b6 100644 --- a/src/Command/FixerApplication.php +++ b/src/Command/FixerApplication.php @@ -48,7 +48,6 @@ use function defined; use function escapeshellarg; use function get_class; -use function getenv; use function http_build_query; use function ini_get; use function is_file; @@ -269,7 +268,7 @@ private function getFixerProcess(OutputInterface $output, int $serverPort): Proc throw new FixerProcessException(); } - $env = getenv(); + $env = Environment::getCleanedArray(); $env['PHPSTAN_PRO_TMP_DIR'] = $this->proTmpDir; $forcedPort = $_SERVER['PHPSTAN_PRO_WEB_PORT'] ?? null; if ($forcedPort !== null) { diff --git a/src/DependencyInjection/Configurator.php b/src/DependencyInjection/Configurator.php index 39cade4fc9..7865956266 100644 --- a/src/DependencyInjection/Configurator.php +++ b/src/DependencyInjection/Configurator.php @@ -96,10 +96,6 @@ public function loadContainer(): string unset($staticParameters['env']['SHELL_VERBOSITY']); // make sure invocations via blackfire use the same container unset($staticParameters['env']['BLACKFIRE_AGENT_SOCKET']); - // prevent known sensitive parameter from being leaked, when container files committed in repositories - unset($staticParameters['env']['GITHUB_TOKEN']); - unset($staticParameters['env']['CI_JOB_TOKEN']); // gitlab - unset($staticParameters['env']['PRIVATE-TOKEN']); // gitlab $containerKey = [ $staticParameters, diff --git a/src/DependencyInjection/ContainerFactory.php b/src/DependencyInjection/ContainerFactory.php index cac88d0e39..7725ce98bd 100644 --- a/src/DependencyInjection/ContainerFactory.php +++ b/src/DependencyInjection/ContainerFactory.php @@ -23,6 +23,7 @@ use PHPStan\BetterReflection\SourceLocator\SourceStubber\PhpStormStubsSourceStubber; use PHPStan\BetterReflection\SourceLocator\Type\SourceLocator; use PHPStan\Command\CommandHelper; +use PHPStan\Command\Environment; use PHPStan\File\FileHelper; use PHPStan\Node\Printer\Printer; use PHPStan\Php\PhpVersion; @@ -42,7 +43,6 @@ use function count; use function dirname; use function extension_loaded; -use function getenv; use function implode; use function ini_get; use function is_array; @@ -118,7 +118,7 @@ public function create( [ 'rootDir' => $this->rootDirectory, 'currentWorkingDirectory' => $this->currentWorkingDirectory, - 'env' => getenv(), + 'env' => Environment::getCleanedArray(), ], ); @@ -146,7 +146,7 @@ public function create( 'generateBaselineFile' => $generateBaselineFile, 'usedLevel' => $usedLevel, 'cliAutoloadFile' => $cliAutoloadFile, - 'env' => getenv(), + 'env' => Environment::getCleanedArray(), ], $additionalParameters)); $configurator->addDynamicParameters([ 'singleReflectionFile' => $singleReflectionFile, diff --git a/src/DependencyInjection/LoaderFactory.php b/src/DependencyInjection/LoaderFactory.php index de6ac821e2..c25a5be8bd 100644 --- a/src/DependencyInjection/LoaderFactory.php +++ b/src/DependencyInjection/LoaderFactory.php @@ -3,8 +3,8 @@ namespace PHPStan\DependencyInjection; use Nette\DI\Config\Loader; +use PHPStan\Command\Environment; use PHPStan\File\FileHelper; -use function getenv; final class LoaderFactory { @@ -32,7 +32,7 @@ public function createLoader(): Loader $loader->setParameters([ 'rootDir' => $this->rootDir, 'currentWorkingDirectory' => $this->currentWorkingDirectory, - 'env' => getenv(), + 'env' => Environment::getCleanedArray(), ]); return $loader;