介绍
近年来,我们已经看到Web和驱动Web的各种行业(例如浏览器,搜索引擎等)开始更加重视用户安全。 Chrome现在 警告用户不要使用HTTP网站 有更多的浏览器准备关注,而Google搜索已确认它们可以使搜索引擎排名提高 HTTPS 网站。
诸如此类的发展促使大量网站所有者将其服务器从旧的,不安全的HTTP迁移到更安全的替代HTTPS。 (HTTPS被认为更安全,因为它要求服务器通过SSL证书进行身份验证,以保护用户免受大多数类型的网络攻击。)
但是,大多数网站仅对其最关键的组件(例如登录或POST请求)实施了HTTPS,但仍可能对其他“非关键”功能使用HTTP。
这在HTTPS成立之初就很有意义,因为加密连接由于必须执行而在计算上更加昂贵 握手 每个新的连接。 此外,当时许多广泛使用的Web开发平台,库和环境还没有支持HTTPS,这一事实以深夜的应用程序崩溃或模糊的运行时错误的形式引起了管理员和开发人员无休止的头痛。
当然,这已不再是事实–实际上,正如本文所论证的那样, 无需 使用HTTPS 所有 您网站的连接实际上对您的业务不利。
混合内容
未通过HTTPS提供所有内容的网站称为 混合内容 网站。 一个学者 纸 2015年发表的论文发现,他们的Alexa前43名样本中有超过100,000%至少提供了一种混合内容。
尽管这听起来没什么大不了,但是混合内容对于用户来说可能是非常危险的,但是它也会对网站产生负面影响。
安全问题
对整个网站使用HTTPS的最重要原因是安全性。 黑客只需要一个不受保护的HTTP连接。 中间人(MITM)攻击者 可以替换页面上的任何HTTP内容,以窃取凭据和会话,获取敏感数据或启动浏览器漏洞并在访问者的计算机上安装恶意软件。
网站遭到入侵自然会导致用户不信任并在将来避免使用它,从而有效损害您的在线声誉。
Firefox和Chrome 已经开始 默认情况下会阻止混合内容,从而允许用户手动选择通过HTTP加载内容。 但是,由于混合内容存在安全风险,因此两种浏览器的确向用户显示混合内容警告,这也可能对您网站的声誉产生负面影响。
性能问题
除了安全性,越来越多的人采用 HTTP / 2 业界已经为Web带来了许多性能和安全性升级。
尽管自HTTP / 2起性能的提高似乎违反直觉 仅适用 通过加密的HTTPS连接,该协议允许浏览器使用与HTTPS Web服务器的单个加密连接进行所有通信。
重用同一连接可消除重复建立新连接(即再次握手)带来的开销。 这意味着,与使用单个HTTPS连接访问完全受保护的站点相比,在具有混合内容的站点上从加密的HTTPS连接跳转到未加密的HTTP实际上更慢且对资源的要求更高。
HTTP / 2还实现了 0-RTT
会话恢复模式,允许浏览器仅使用单个请求(而不是完整的握手)来恢复之前访问过的HTTPS网站的暂停会话。 这使得HTTP / 2恢复至少与未加密的HTTP连接一样快,同时仍提供HTTPS的所有优点。 提供混合内容意味着您的网站无法充分利用此功能或HTTP / 2的其他任何出色功能。
在这两种情况下,HTTP / 2都可以提高访问者连接到站点的速度,而速度至关重要。 研究 多年来已经表明,响应性和页面加载速度是关键的用户界面设计要求。 网站的响应时间越慢,用户保持参与的可能性就越小,用户的参与度直接影响您网站的用户体验(并因此影响您的转化率)。
混合内容还会影响网站中使用的基础Web技术的性能。 现在浏览器 限制javascript功能 例如服务人员和推送通知仅用于保护上下文,因为否则它们可能会被黑客滥用以达到恶意目的。 这再次意味着您的网站在提供混合内容时无法利用这些技术中的任何一种。
SEO问题
搜索引擎优化 (SEO)是在线业务营销人员的头等大事。 SEO是指提高网站在 搜索引擎结果页面 (SERP),它直接影响网站的访问量。
谷歌已经证实,他们的搜索结果排名算法对通过HTTPS服务的网站的排名提高了一点。 由于增强是实时的和每个URL的,因此通过HTTPS完整地服务网站将导致整个网站的SEO增强(而不是仅通过HTTPS服务的那些URL)。 诚然,与其他高质量内容或用户流量相比,这种排名信号增强功能非常轻巧,但仍可奖励您在删除混合内容方面的投资。
谷歌最近也 公布 在确定排名时,要考虑(大量)网页加载速度和网站的总体性能。 这意味着HTTP / 2的性能优化和删除混合内容可以协同工作,以提高网站在Web上的可见性。
最后,如果您希望在网站的SEO中充分利用SSL,则可以考虑 SSL.com的EV证书,它通过安全指示符(例如浏览器中的绿色条)为访问者提供最高的保证,以确保访问者的安全并与您的内容保持互动-较长的访问就等于更高的排名。
浏览器混合内容警告
受SSL保护的网站的访问者期望(并应得到)无缝保护。 如果网站不能完全保护所有内容,浏览器将显示“混合内容”警告。 当您的客户看到此警告时,他们可以采取以下两种方法之一。 如果他们 别 认真对待安全性,他们会忽略它,单击并假定一切都会好起来(非常糟糕)。 如果他们 do 认真对待安全性,他们会注意这一点,退出您的网站并假设 不要认真对待安全性(甚至更糟)。
此外,所有现代浏览器都会阻止更多恶意类型的混合内容-这样做可能会破坏您的网站。
当然,最好的解决方案是通过正确地将站点配置为仅提供安全内容来确保首先不会出现这些警告和/或阻止。
为什么我会看到此警告?
内容混合警告表示安全和不安全元素都在应该完全加密的页面上提供。 使用HTTPS地址的任何页面都必须具有来自安全来源的所有内容。 链接到HTTP资源的任何页面均被视为不安全,并被您的浏览器标记为安全风险。
混合内容警告分为两类: 混合被动内容 和 混合活性成分.
混合被动内容
被动内容是指可以替换或更改但不能更改页面其他部分的项目,例如图形或照片。 所有混合内容警告的最常见原因可能是(理论上)安全站点配置为从不安全来源提取图像。
被动HTTP请求通过以下标记提供服务:<audio>
(src
属性)<img>
(src
属性)<video>
(src
属性)<object>
子资源(当 <object>
执行HTTP请求)
混合有效内容
活动内容可能会更改网页本身。 中间人攻击可能允许任何HTTPS页面上的HTTP内容请求被拦截和/或重写。 这使得恶意活动内容非常危险–用户凭证和敏感数据可能被盗,或者用户系统上安装了恶意软件。 例如,帐户创建页面上的一些JavaScript可帮助用户生成随机密码,而JavaScript可以替换为提供随机搜索但预先生成的代码,或者将其他安全密码秘密地提供给第三方的代码代替。
可以利用活动的混合内容来破坏敏感的私人数据,但是即使看上去无害的面向公众的网页仍可以将访问者重定向到危险站点,提供不需要的内容或窃取Cookie进行利用。
<script>
(src
属性)<link>
(href
属性)(包括CSS样式表)XMLHttpRequest
对象请求<iframe>
(src
属性)CSS中所有使用url值的情况(
@font-face
, cursor
, background-image
等)<object>
(data
属性)默认情况下,所有现代浏览器都将阻止活动的混合内容(这可能会破坏配置错误的网站)
为什么以及如何解决混合内容警告
保护您的网站安全可以使访问者信任您,这一点至关重要。 但是,从站点中消除所有不安全内容将带来更大的好处,那就是消除误报警告-如果您正确配置的网站受到威胁,攻击者插入的任何不安全元素都会触发混合内容警告,从而为您提供了额外的绊索来检测并解决这些问题。
同样,避免混合内容问题的最佳方法是通过HTTPS而不是HTTP提供所有内容。
对于您自己的域,将所有内容用作HTTPS并修复您的链接。 通常,内容的HTTPS版本已经存在,这只需要在链接中添加“ s” – http://
至 https://
.
对于其他域,请使用站点的HTTPS版本(如果有)。 如果HTTPS不可用,您可以尝试联系域并询问他们是否可以通过HTTPS提供内容。
另外,使用“相对URL”可以使浏览器根据用户使用的协议自动选择HTTP或HTTPS。 例如,不是使用带有“绝对路径”的链接来链接到图像:
该站点可以使用相对路径:
这使浏览器可以自动添加 http:
or https:
视需要添加到URL的开头。 (请注意,链接到的站点将需要通过HTTP和HTTPS提供资源,以使相对URL起作用。)
第一个请求问题
我们希望到目前为止,尽管您决定将网站完全迁移到HTTPS上,但仍然可以做出一些改进,尽管本文提出了一些反对混合内容的良好论据。
当用户在浏览器中键入您网站的URL时,他们通常永远不会完全键入协议名称(即 https://
)。 自然,浏览器不知道您的网站使用哪种协议,默认情况下为HTTP。
如果您的网站配置正确,它将(通过HTTP 301/302响应)将浏览器重定向到其HTTPS实例; 尽管这意味着浏览器在首次访问您的网站时必须执行两个请求,而不是单个HTTPS请求。
这可能会带来问题,因为用户会察觉到时滞,从而给网站留下了不好的第一印象。 这样,他们将不太可能坚持下去,最终可能导致访客流量减少。
而且,黑客可以在到达服务器之前拦截该第一个HTTP请求以读取或修改它。 这种情况的常见情况是执行称为 SSL剥离 这使攻击者可以用不受保护的HTTP替换HTTPS连接。
HTTP严格的传输安全性
HTTP严格传输安全 or HSTS 试图解决这个问题。 HSTS由Internet工程任务组(IETF)在RFC 6797中实施,是Web服务器可以在其响应中包含的HTTPS标头。 此标头指示兼容的浏览器在访问网站时始终使用HTTPS。 HSTS适用于所有请求,包括图像,CSS样式表和任何其他Web资源。
您可能会想到,浏览器必须首先 看到 HSTS标头才能兑现它,这意味着HSTS依赖于攻击者无法拦截第一个HTTP请求。 因此,HSTS本身并不是一个完整的解决方案,而是SSL剥离的简单解决方法。
HSTS预加载
幸运的是,Chromium项目提出了一个他们命名的解决方案 HSTS预加载,其中包括维护已请求HSTS预加载功能的网站的公共列表。 当访问网站时,Chromium浏览器将查询该列表,如果在该列表中找到该网站,则无论以前的历史记录或用户输入如何,它们都将继续通过HTTPS(包括第一个请求)与其进行通信。
因此,预加载可以通过删除初始HTTP请求来提高网站的性能和安全性。 此外,它可以间接提高您网站的SERP排名和用户体验。
所有主要的浏览器(谷歌的Chrome,Microsoft的IE / Edge,苹果的Safari,Mozilla的Firefox和Opera)都可以访问Chromium的HSTS预加载列表,这意味着加入该列表将为您使用的浏览器提供访问者的预加载优势。
但是,如果我们不提及对HSTS预载列表解决方案的可扩展性的担忧,我们将不知所措–由于实际规模和计算复杂性的限制,它不能包括Internet中的所有网站,因此进入可能变得越来越困难随着时间的流逝,HSTS预加载变得越来越广泛。
我该如何加入?
如果您有兴趣加入HSTS预加载列表,请记住,您的网站必须遵循某些规则。 Chromium项目已发布了希望加入其项目网站的网站的提交要求列表。 要求逐字包含在以下列表中,但是您可以在HSTS中找到更多详细信息 RFC 6797.
要在HSTS预载列表中被接受,您的网站必须:
- 提供有效的证书。
- 如果正在侦听端口80,则在同一主机上从HTTP重定向到HTTPS。
- 通过HTTPS服务所有子域。 特别是,您必须为
www
子域(如果存在该子域的DNS记录)。 - 在基本域上为HTTPS请求提供符合RFC 6797的HSTS标头:
- 特
max-age
必须至少为31536000秒(1年)。 - 特
includeSubDomains
必须指定指令。 - 特
preload
必须指定指令。
- 特
- 如果您要从HTTPS站点提供其他重定向,则该重定向必须 还 具有兼容的HSTS标头(重定向到的页面也必须如此)。
这是有效的HSTS标头的示例。
严格的运输安全性:max-age = 63072000; includeSubDomains; 预载
您可以通过访问预加载列表网站并在输入框中输入您的域名来测试您的网站是否合格。 该Web应用程序将指出您需要解决的问题(如果有)。
不幸的是,现代网站的复杂性不允许人们提出一种“一刀切”的服务器配置,以便在本文中包含HSTS预加载。 第三方或其他自定义组件可能存在运行时问题,必须单独解决。
尽管Chromium项目已在预加载网站中包含了一些部署建议,但我们始终乐于帮助客户提高其通信安全性。 只需给我们发送电子邮件至 support@ssl.com 专家很乐意讨论满足您的安全需求的最佳途径。
结论
HTTPS正在成为默认的Web通信协议,完全承诺使用HTTPS只会对站点所有者和访问者产生积极影响。 我们建议从您的网站中删除任何混合内容,以避免不必要的问题(和用户不满意)。
一如既往,感谢您的选择 SSL.com,我们认为更安全的互联网就是更好的互联网。