我排除了snakeyaml,因为它有漏洞。现在它无法识别application.properties,我的应用程序无法在Intellij IDE中启动,甚至无法通过gradle bootRun
的命令行启动。
snakeyaml是专门用来阅读yaml文件的,还是也需要加载application.properties?
编辑1:我排除了build.gradle
中所有的snakeyaml依赖项,如下所示:
configurations.all {
exclude group: 'org.yaml', module: 'snakeyaml'
}
构建在测试用例级别失败,如下所示:
> Task :test
RestApplicationTests > contextLoads() FAILED
java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:132
Caused by: java.lang.IllegalStateException at YamlPropertySourceLoader.java:47
Caused by: java.lang.IllegalStateException at YamlPropertySourceLoader.java:47
当我运行应用程序时,我得到下面的错误:
> Task :app:bootRun FAILED
18:52:47.125 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.IllegalStateException: Attempted to load Config resource 'class path resource [application.yml]' via location 'optional:classpath:/' but snakeyaml was not found on the classpath
at org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:47)
at org.springframework.boot.context.config.StandardConfigDataLoader.load(StandardConfigDataLoader.java:54)
at org.springframework.boot.context.config.StandardConfigDataLoader.load(StandardConfigDataLoader.java:36)
1条答案
按热度按时间thigvfpy1#
你最好的办法是让库的作者来修复这个漏洞。如果做不到,试着自己修复它,构建库并上传到你的组织的repo,然后依赖它。你的错误不是因为缺少库,而是因为缺少类,所以如果你想的话,你可以提供你自己的库,不要做任何事情(假设它们实际上没有被使用),或者如果接口实际上被使用,则自己实现它。
如果你不使用它,你就不会有风险的说法都是虚假的,应该被忽略。这完全是胡说八道,只有一个完全不懂安全的真正的新手才会说这样的错误。忽略它们。你不应该在你的应用中加载有漏洞的库,因为恶意用户可能会在你的应用中执行使用有漏洞的库的代码。