当前位置: 首页 > 知识库问答 >
问题:

SonarQube规则:Spring Boot应用程序中的“使用命令行参数是安全敏感的”

宋宇
2023-03-14

SonarQube只是在非常基本的Spring Boot应用程序中显示了一个关键的安全问题。在主方法中。

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

SonarQube希望我确保在这里安全使用命令行参数

我在StackOverflow和谷歌上搜索了这个问题,我很惊讶我找不到任何关于这个问题的评论。我几乎可以肯定,在SpringApplication.run方法中已经有了一些安全检查。而且,我甚至不记得有人在调用SpringApplication.run之前清理了主方法参数。我只想将其标记为假阳性,然后继续前进。

这里还提出了部分问题:SonarQube显示了Spring框架控制器和Spring框架应用程序主类中的安全错误

是假阳性吗?


共有3个答案

穆毅然
2023-03-14

不,这确实是一个关键的安全问题。它只是要求在使用前对ARG进行消毒。对于一个简单的应用程序来说,不需要这么担心,但对于生产应用程序来说,这可能是一件大事。

更多详情请访问https://rules.sonarsource.com/java/RSPEC-4823?search=Make确保在这里安全地使用命令行参数。

俞新翰
2023-03-14

如果你确定,那么你可以包括以下内容来解决这个问题。

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

}

根据声纳留档,这似乎被标记为安全热点

与漏洞不同,安全热点不一定是容易受到攻击的问题。相反,安全热点强调需要手动检查的安全敏感代码片段。经过检查,您将发现需要修复的漏洞或没有威胁。

你可以在这里阅读更多关于它的信息

根据RSPEC-4823或S4823规则,命令行参数将根据

  • 使用任何命令行参数时,都不会首先进行清理

如果你的应用程序属于这一类,它们肯定是你的应用程序可能存在的安全问题。

燕光熙
2023-03-14

如果您没有使用任何命令行参数,那么您可以避免在run方法中提到args参数。就像下面的代码一样。

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

}

这将消除这一热点问题。

 类似资料:
  • 到目前为止,我发现了两种在启动时配置spring boot应用程序的方法,一种使用< code>-D,另一种使用< code> - ,如下所示: 有时,第一个有效,有时第二个有效。正如开发人员所发现的那样,当以下示例中的 方法未给出 参数时,方法不起作用,但 起作用。 而今天,我在命令行配置日志,发现 但 工作。 以上可能有其他原因,可能< code > log back . configurat

  • 问题内容: 我的程序正在获取命令行参数。使用Ant时如何通过? 问题答案: 扩展了Richard Cook的答案。 这是运行任何程序(包括但不限于Java程序)的任务: 这是从文件运行Java程序的任务: 您可以像这样从命令行调用: 确保使用语法;如果运行此命令: 然后将尝试运行目标和。

  • 我在我的项目中使用SonarQube,并且我有“^.\json[;]”的安全热点?\新加坡元: Hier是SonarQube发出的信息, 使用正则表达式是安全敏感的。它在过去导致了以下漏洞: CVE-2017-16021 CVE-2018-13863 根据输入字符串计算正则表达式可能是一项CPU非常密集的任务。巧尽心思构建的正则表达式(如(a)s)将需要几秒钟来计算输入字符串aaaaaaaaaaa

  • 问题内容: 我的应用程序有一个JNLP软件包。现在,我需要将命令行参数传递给我的应用程序。如何扩展我的JNLP文件以列出命令行参数? 例如,我需要说和,并且需要在JNLP文件中提及。 问题答案: 请查看元素说明以获取元素的更多详细信息。 所述元素指示JNLP文件被启动应用(而不是小应用程序)。.. 可以通过包含一个或多个嵌套元素来为应用程序指定参数。 例如:

  • 我有一个JNLP软件包用于我的应用程序。现在我需要将命令行参数传递给我的应用程序。如何扩展JNLP文件以列出命令行参数? 例如,我需要说和和是JNLP文件的一部分。

  • 我是新手。我有一个非常基本的问题,但我试图在谷歌上找到它,但不明白。我的问题是。 在firebase中,谷歌表示: 任何人都可以在这种类型的安全规则中中断,即使是不使用你的应用程序的人。我得到了它。现在,如果我想制作聊天应用或小型社交应用,那么我应该使用什么样的安全规则? 这条规则足以让我的应用程序安全吗?我在下面发帖: 我的应用程序目标是在使用我的应用程序之前通过Firebase身份验证对用户进