com.mchange:c3p0 组件安全漏洞及健康度分析

文章更新时间:2023-09-20 14:40

com.mchange:c3p0

组件简介

维护者swaldman 个人许可证类型LGPL-2.1+,SSPL-1.0,EPL-1.0
首次发布2012 年 5 月 18 日最新发布时间2019 年 12 月 12 日
GitHub Star1256GitHub Fork337
依赖包532依赖存储库17,523

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。

官网:https://www.mchange.com/projects/c3p0/

官方仓库:https://github.com/swaldman/c3p0

参考链接:

https://packages.ecosyste.ms/registries/repo1.maven.org/packages/com.mchange:c3p0

组件健康度

技术健康度c3p0 提供了实现 jdbc3 和 jdbc2 扩展规范说明的 Connection 和 Statement 池的 DataSources 对象,可以有效地管理数据库连接和语句的创建、释放和重用。c3p0 还支持自定义连接生命周期管理、连接测试、故障恢复、语句缓存等功能,提高了性能和稳定性。c3p0 的技术健康度较高,可以满足多种场景的需求。
社区健康度c3p0 的主要开发者是 Steve Waldman,他在 GitHub 上维护了 c3p0 的源码和文档。c3p0 在 GitHub 上有 1.5k 个星标,113 个分支,271 个提交,表明它有一定的关注度和活跃度。c3p0 还有一个 Twitter 账号 @c3p0_jdbc,不过最近一次更新是在 2019 年 11 月。c3p0 的社区健康度一般,可以通过 GitHub 提交问题和反馈,但可能不会得到及时的回复和解决。
更新和维护频率c3p0 的最新版本是 0.9.5.5,发布于 2019 年 12 月。这个版本修复了一些 bug,并增加了对 Java 11 的支持。c3p0 的更新和维护频率较低,可能是因为它已经比较成熟和稳定,没有太多的新功能需求或者重大的问题。
兼容性c3p0 支持多种数据库驱动,如 PostgreSQL, MySQL, Oracle 等。c3p0 还支持与 Hibernate, Apache Tomcat, JBoss 等框架和服务器集成。c3p0 的兼容性较好,可以适应不同的数据库和应用环境。
文档和支持c3p0 在官网上提供了详细的文档,包括安装、使用、配置、性能、问题等方面的说明。文档中还包含了一些示例代码和配置文件,方便用户参考和学习。c3p0 的文档和支持较好,可以帮助用户快速上手和解决问题。

com.mchange:c3p0 是一个技术健康度较高、兼容性较好、文档和支持较好的 JDBC 连接池库,但是社区健康度一般,更新和维护频率较低。它支持多种数据库和框架的集成,提供了高并发和高性能的数据库连接和语句管理功能。它是一个适合多种场景的开源项目,值得用户考虑和使用。

参考链接:

https://www.mchange.com/projects/c3p0/

https://github.com/swaldman/c3p0

https://blog.csdn.net/qq_44778023/article/details/109473676

https://www.cnblogs.com/whhjava/p/10083910.html

组件许可证解读

这个项目的许可证信息可能比较复杂,因为它涉及到了三种不同的许可证:LGPL-2.1+,SSPL-1.0和EPL-1.0。这些许可证都是开源许可证,但有一些区别和兼容性问题。

  • LGPL-2.1+是GNU Lesser General Public License的缩写,它是一种弱化的GPL许可证,允许你将LGPL许可的库与任何类型的软件一起使用,但要求你在修改该库时遵循LGPL的规则,比如提供源代码和保留原始版权信息等。LGPL-2.1+还允许你选择后续版本的LGPL(例如LGPL-3.0)来重新分发或修改该库。
  • SSPL-1.0是Server Side Public License的缩写,它是一种类似于AGPL的许可证,要求你在提供基于SSPL许可的软件的服务时,必须公开该软件及其所有修改和依赖的源代码。SSPL-1.0是由MongoDB公司制定的,目的是防止云服务提供商利用其软件而不贡献回馈。
  • EPL-1.0是Eclipse Public License的缩写,它是一种灵活的开源许可证,允许你将EPL许可的软件与任何类型的软件一起使用,但要求你在修改该软件时遵循EPL的规则,比如提供源代码和通知其他贡献者等 。

这三种许可证之间的兼容性如下:

  • LGPL-2.1+和SSPL-1.0之间不兼容,因为SSPL-1.0对网络使用有更严格的限制 。如果你将LGPL许可的库与SSPL许可的软件一起使用,并通过网络提供服务,那么你必须遵守SSPL-1.0的要求,并公开所有相关的源代码,包括LGPL许可的库。这可能违反了LGPL许可的原意,因为它只要求你公开修改过的库,而不是整个软件。
  • LGPL-2.1+和EPL-1.0之间不兼容,因为EPL-1.0要求你在修改EPL许可的软件时,在派生作品中保留EPL许可 。如果你将LGPL许可的库与EPL许可的软件一起使用,并对其中任何一部分进行了修改,那么你必须遵守EPL-1.0的要求,并在派生作品中使用EPL许可。这可能违反了LGPL许可的原意,因为它允许你在派生作品中使用其他类型的许可证。
  • SSPL-1.0和EPL-1.0之间不兼容,因为SSPL-1.0对网络使用有更严格的限制 。如果你将SSPL许可的软件与EPL许可的软件一起使用,并通过网络提供服务,那么你必须遵守SSPL-1.0的要求,并公开所有相关的源代码,包括EPL许可的软件。这可能违反了EPL许可的原意,因为它只要求你公开修改过的软件,而不是整个软件。

综上所述,如果一个项目同时使用了这三种许可证,那么它可能会面临很多法律风险和挑战。建议你在使用该项目之前,仔细阅读各个组件的许可证,并咨询专业的法律意见。

许可证原文链接:

https://github.com/swaldman/c3p0/blob/master/LICENSE-EPL

https://github.com/swaldman/c3p0/blob/master/LICENSE-LGPL

https://github.com/swaldman/c3p0/blob/master/LICENSE

参考链接:

https://future-architect.github.io/articles/20200821/

https://opensource.stackexchange.com/questions/2486/compatibility-between-epl-and-lgpl

https://opensource.stackexchange.com/questions/7781/is-using-lgpl-1-2-or-epl-1-0-licensed-jar-allowed-in-proprietary-software-in-doc

https://opensource.stackexchange.com/questions/5664/linking-from-lgpl-2-1-software-to-apache-2-0-library

https://opensource.stackexchange.com/questions/4058/what-is-the-point-of-including-the-mit-copyright-text-if-you-use-someones-code

组件漏洞版本及修复方案

漏洞编号漏洞标题漏洞等级影响版本修复版本
MPS-2019-4274c3p0 存在拒绝服务漏洞高危(-∞,0.9.5.4)0.9.5.4
MPS-2018-16252c3p0 存在 XXE 漏洞严重(-∞,0.9.5.3)0.9.5.3

同类型可替代组件

  • Apache Commons DBCP:这是一个由 Apache 组织提供的连接池库,它实现了 JDBC 3 和 JDBC 2 扩展规范,支持多种数据库驱动和框架。它的优点是成熟和稳定,缺点是更新和维护频率较低,性能和功能不如其他一些新的连接池库。官网:https://commons.apache.org/proper/commons-dbcp/
  • HikariCP:这是一个由 Brett Wooldridge 创建的连接池库,它声称是最快的 JDBC 连接池库,具有高性能和低开销的特点。它的优点是轻量级和简单,支持 Java 8 和 Lambda 表达式,缺点是配置选项较少,功能较为基础。官网:https://github.com/brettwooldridge/HikariCP
  • Tomcat JDBC:这是一个由 Tomcat 服务器提供的连接池库,它基于 Apache Commons DBCP 的代码,但是做了一些改进和优化。它的优点是功能丰富和性能良好,支持异步连接释放和验证,缺点是与 Tomcat 服务器耦合较紧,不太适合其他应用环境。官网:https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

组件SBOM

组件名称版本是否直接依赖仓库
com.mchange:mchange-commons-java@mchange-commons-java.version.maven@maven

该SBOM清单仅展示部分内容

完整SBOM清单及检测报告:

https://www.murphysec.com/console/report/1704381912721440768/1704381912889212928?allow=1

(0)
上一篇 2023年9月19日 下午7:32
下一篇 2023年9月20日 下午3:48

相关推荐

  • com.google.code.gson:gson 组件安全漏洞及健康度分析

    文章更新时间:2023-09-26 11:40 组件简介 维护者 Google 组织 许可证类型 Apache-2.0 首次发布 2008 年 8 月 10 日 最新发布时间 2023 年 1 月 6 日 GitHub Star 22450 GitHub Fork 4296 依赖包 13,282 依赖存储库 291,545 Gson(又称Google Gso…

    2023年9月26日
    0
  • com.carrotsearch:hppc 组件安全漏洞及健康度分析

    文章更新时间:2023-09-25 11:30 组件简介 维护者 carrotsearch 组织 许可证类型 Apache-2.0 首次发布 2011 年 1 月 12 日 最新发布时间 2021 年 12 月 15 日 GitHub Star 935 GitHub Fork 157 依赖包 344 依赖存储库 2,559 HPPC(高性能的原始集合)库专注…

    2023年9月25日
    0
  • cglib:cglib 组件安全漏洞及健康度分析

    文章更新时间:2023-09-20 15:45 组件简介 维护者 cglib 组织 许可证类型 MulanPSL-2.0 首次发布 2005 年 11 月 8 日 最新发布时间 2019 年 8 月 12 日 GitHub Star 4664 GitHub Fork 886 依赖包 1,972 依赖存储库 40,788 cglib是一个用于生成和转换Java…

    2023年9月20日
    0
  • com.hazelcast:hazelcast 组件安全漏洞及健康度分析

    文章更新时间:2023-09-27 17:50 组件简介 维护者 hazelcast 组织 许可证类型 Apache-2.0 首次发布 2009 年 2 月 27 日 最新发布时间 2023 年 8 月 21 日 GitHub Star 5572 GitHub Fork 1779 依赖包 595 依赖存储库 10,433 Hazelcast是一种内存数据网格…

    2023年9月27日
    0
  • com.squareup.retrofit2:retrofit 组件安全漏洞及健康度分析

    文章更新时间:2023-10-07 20:10 组件简介 维护者 retrofit 组织 许可证类型 Apache-2.0 首次发布 2013 年 5 月 13 日 最新发布时间 2020 年 5 月 20 日 GitHub Star 42038 GitHub Fork 7342 依赖包 1,998 依赖存储库 106,820 Retrofit是一个网络访问…

    2023年10月7日
    0