【发布时间】:2020-01-08 14:44:59
【问题描述】:
SonarQube 只是在非常基本的 Spring Boot 应用程序中显示了一个严重的安全问题。在 main 方法中。
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
SonarQube 要我Make sure that command line arguments are used safely here.
我在 StackOverflow 和 Google 上都搜索了这个,我很惊讶我找不到任何关于这个问题的评论。我几乎可以肯定 SpringApplication.run 方法中已经有一些安全检查。而且,我什至不记得有人在调用SpringApplication.run 之前清理了主要方法参数。我只是想将其标记为 误报 并继续。
是误报吗?
【问题讨论】:
-
我在我们的任何启动应用程序中都没有看到任何 args 实例被清理。深入研究 SpringApplication 类中这些参数的用法。它们用于创建 SpringFactoriesInstances 。因此,除非您使用 args 变量在您的应用程序中配置某些内容,否则您可以选择不设置它(我猜这会消除错误)
-
@ArpanKanthal 是的,我也不是。在调用 Spring Boot 运行方法之前,我从未见过这样的事情。我昨天尝试快速阅读代码 Spring Boot,但无法深入挖掘以看到值得一看的东西。但是,我仍然感谢您的评论。我今天会更深入地检查一下。谢谢。
-
此规则已弃用,最终将被删除。见:rules.sonarsource.com/java/RSPEC-4823
-
问题是当您实际使用这些值之一时。在我的情况下,我正在测试参数,因为我需要有两种不同的方式来调用 SpringBootApplication 并且我需要扫描这些值。不幸的是,在我所处的位置,如果至少有任何警告,它被认为是完全不安全的,无法理性地评估它。
标签: java spring-boot sonarqube