.NET Core应用程序中的Sonarqube规则S4823 "使用命令行参数是安全敏感的"。

问题描述 投票:0回答:1

我在项目中使用Sonarqube来检查代码质量。

我收到错误S4823 Using command line arguments is security-sensitive 这里有描述。https:/rules.sonarsource.comcsharpRSPEC-4823?search=using%20command.

这个错误是在我没有修改的代码中--它是在创建项目时自动生成的。

namespace WebApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}

我的应用程序在生产中运行了一段时间。它以OutOfProcess的形式托管在IIS后面。我想知道我是否可以安全地从ConfigureWebHostDefaults中删除args?

我不记得在任何地方设置了额外的参数,但也许在这个过程中,某些东西(IIS、Kestrel、系统...)设置了一些参数?在这种情况下,我应该接受Sonarqube的警告,还是做其他事情?

.net-core sonarqube asp.net-core-webapi
1个回答
1
投票

正如你在你的代码中可以看到的那样。argsHost.CreateDefaultBuilder()

这个方法可以创建一个默认配置的HostBuilder。你可以在 微软Github仓库.

当它不是空的时候,它被用作配置的数据提供者。其他默认的提供者是环境变量和 appsettings.{Environment}.json 和 appsettings.json。检查 https:/docs.microsoft.comen-usaspnetcorefundamentalsconfiguration?view=aspnetcore-3.1。

其中一些参数可以用于Kestrel(端口、超时等),因为你是在一个Web应用程序中。从 公文 :

进程外: CreateDefaultBuilder 电话 UseIISIntegration 到。

  • 配置服务器在ASP.NET核心模块后运行时应监听的端口和基本路径。
  • 配置主机捕获启动错误。

如果你检查源码上的 官方资料库你可以看到,参数(主机、端口等)是这样检索的。

var port = hostBuilder.GetSetting(ServerPort) ?? Environment.GetEnvironmentVariable($"ASPNETCORE_{ServerPort}");

文档中写道 GetSetting 读取配置中的值,所以它可以从 args 或环境变量作为后备。

由于我不确定IIS是使用命令行参数还是环境变量,所以你可以打印args和环境变量的值来检查哪些是IIS提供的。

© www.soinside.com 2019 - 2024. All rights reserved.