抢占先机
VMware 提供培训和认证,助您加速进步。
了解更多我很高兴地宣布 nohttp 项目,该项目允许用户查找、替换并防止使用 http://
。
今天,Jonathan Leitschuh 发表了一篇博客,标题是想要接管 Java 生态系统?你只需要一个 MITM!。该博客表明,数百个 Java 库正在通过 HTTP 下载依赖项。这使得项目容易受到潜在的 MITM(中间人)攻击。
不幸的是,有多个 Spring 项目使用 HTTP 下载依赖项。幸运的是,我们没有发现任何成功的 MITM 攻击迹象。我们还解决了这个问题,以确保将来不会发生 MITM 攻击。
Spring 团队非常重视安全。自从发现有 Spring 项目通过 HTTP 下载依赖项以来,我们已采取措施确保将来不会发生 MITM 攻击。最明显的改变是将 Maven 仓库地址更新为使用 HTTPS。然而,我们更进一步,几乎在所有地方都切换到使用 HTTPS。
现在是 2019 年,希望大家都能明白我们为什么要消除 HTTP 的使用。使用 HTTPS 速度快、简单,而且免费提供,所以没有任何理由继续使用 HTTP。作为开发者,我们帮助全世界过渡到随处使用 HTTPS 非常重要(即使是静态站点也需要 HTTPS)。
当然,我们并非唯一致力于消除 HTTP 使用的团队。Let’s Encrypt 的成立就是为了让 HTTPS 免费、自动化和开放。Chrome 已更新其界面,以表明 HTTP 不安全。Maven Central 已弃用 HTTP 的使用。这样的例子不胜枚举。
Spring 团队已竭尽全力更新所有 URL 以使用 HTTPS。这包括从 Maven 仓库 URL 到 Apache 许可证,再到文档链接的所有内容。在某些情况下无法使用 HTTPS。例如,我们链接的一些站点不支持 HTTPS,XML 命名空间标识符必须与文档中的标识符匹配等等。
为了消除 HTTP 的使用,Spring Framework 已更新,以便通过 classpath 解析使用 HTTPS 位置的 XML 位置。以前,这只针对使用 HTTP 的 URL 进行。考虑以下 XML 配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
[https://www.springframework.org/schema/beans/spring-beans.xsd](https://www.springframework.org/schema/beans/spring-beans.xsd)
URL 是通过 classpath 解析的,而不是需要网络连接。
请注意,作为标识符的 XML 命名空间名称不能更改为使用 HTTPS。从部署安全控制的角度来看,这并不理想,但该名称从未通过网络请求,因此对用户几乎没有危害。
Spring 团队已更新了我们所有的主机,以确保使用 HTTPS。每个站点都支持 HTTPS,重定向到 HTTPS,并使用 严格传输安全 (Strict Transport Security)。
潜在的 MITM 意味着我们的构建基础设施可能已受到损害。为此,我们重置了所有的构建基础设施,并轮换了所有凭据。
虽然对安全事件做出反应很重要,但同样重要的是部署安全控制,以确保问题不再发生。
我们更新了构建盒子,以阻止 HTTP 流量,确保这种情况不再发生。为了保护开发者和我们的用户,我们创建了 nohttp 项目。该项目可用于查找、替换和阻止 http://
的使用,同时务实地允许那些无法更改的 URL(例如 XML 命名空间名称)。更多详情,请参阅项目网站。
我们希望您能加入这场旨在消除 HTTP 使用的变革。