我是Maven的新手并尝试将其用于Android版本。我心中有这个疑问,这也是由Jason Van Zyl的采访here引发的。
我的问题
如何确保我们从Maven Central下载的依赖项没有恶意软件或没有损坏?
答案 0 :(得分:2)
你永远不能确定它是免于恶意软件的,即它始终是可能的。
Maven Central主持开源项目,因此源代码始终可以从某个地方获得,因此如果您需要确定免费的恶意软件并且还要确保兼容的许可条款,您应该下载源代码并自行构建它而不是使用Maven Central
我确信如果一个工件确实存在恶意软件,那么运行Maven Central的人就会联系一个策略来调查这些事情并处理它。
...
免于腐败。 Maven使用散列摘要进行许多操作以确保无损数据,可以将Maven客户端和Maven存储库配置为始终进行验证。服务器上的文件通常还有数据校验和的* .md5或* .sha1 URL。
JAR本身也有内在的校验和。它们基于ZIP文件,并且具有校验和方案,可以检测大多数损坏。 ZIP目录始终位于文件的末尾,因此也会检测到短/截断的文件。
显然,这些机制不是100%可靠,但可能被认为是99.99%可靠。
...
作为一名软件制作人,将事情放在Maven中心。我会敦促你总是签署你的JAR。这是一种机制,允许每个独立的软件生产者签署他们生产的原始JAR,然后通过互联网上的任何机制分发它。任何用户都可以(理论上)从任何来源下载它,并能够验证它没有被篡改。
不幸的是,Maven Central没有策略来确保源代码可以与二进制文件一起使用,或者有一个策略强制执行JAR签名。因此,从安全角度来看,Maven Central对于开展本地开发工作非常有用,但如果您确实关心安全性,请不要使用它。
您需要实施自己的安全政策(或向其他人付款)代表您实施。
要管理您的安全环境,您可能希望查看一个可以在本地网络上运行的Maven存储库,例如Sonatype Nexus(这是开源和免费版本,启用了大多数功能)。
...
注意,我没有看到您提供的链接,但现在会这样做。