我刚刚向SSL 服务器测试如果我正确地在服务器上实施了 SSL 证书。我得到了一个评分A在他们的排名中,但你可以得到A+如果你已经激活高速传输系统。经过一番搜索,我发现 Google 可能会将 HSTS 视为一个排名因素。因此,它似乎与 SEO 有关。在实施 HSTS 之前,我有一些疑问。
问题 1
如果某些外部 javascript 通过 http(而不是 https)在我的网站上加载图像,会发生什么情况?HSTS 会阻止整个页面加载还是仅阻止特定的“不安全”内容?
问题2
目前(没有 HSTS),如果通过 http 加载资源,我会收到“混合内容”警告。如果启用了 HSTS,是否真的存在“混合内容”?
答案1
HSTS 根本不会尝试处理混合内容:它只是控制浏览器307
在尝试加载 HTTP URL 时是否应执行内部重定向到 HTTPS。混合内容警告是浏览器的一项功能,所有当前浏览器都具有此功能(Mozilla Firefox 23+、Google Chrome 21+、Internet Explorer 10+、Edge 从一开始……)。混合内容警告会阻止<script>
和<iframe>
,但不会阻止<img>
。
上述所有浏览器都会在加载任何内容之前(即在 HSTS 重定向之前)检查混合内容警告。这似乎很自然,也很容易测试。默认情况下,即使使用纯 HTTP,也会加载所有外部图像,并且仅对脚本和 iframe 发出混合内容警告。
HSTS 仅改变了使用纯 HTTP 加载启用 HSTS 的域中的图像的情况,并307 Internal Redirect
执行了该操作。值得注意的是:这种情况不涉及混合内容警告。
所以,HSTS 不能快速解决混合内容问题:
- 您需要修复
http://
您网站上的 URL,甚至是域名本身。 - 您需要确保不会从不信任的来源加载外部脚本。
- 如果第三方不启用 HSTS,仍然容易受到中间人攻击。
- 第三方可能会从其他外部来源加载内容,这一切也适用于这些来源。
- 外部内容站点可能被破解或者自行进行恶意活动。
答案2
我认为这个问题的答案取决于您所引用的脚本是否托管在启用了 HSTS 的域上。
例如,如果您从该域(也可能是子域)提供内容mydomain.com
并启用 HSTS,但您引用的脚本和其他混合内容从未otherdomain.com
启用 HSTS 提供,那么混合内容是可能的,浏览器仍会对此发出警告。
HSTS 将停止(并帮助修复混合内容)通过 HTTP 链接到同一域上的资源 - 根据您的配置,可能是子域 - 因为这些资源将自动“升级”到 HTTPS。
答案3
这是设计使然:如果 HSTS 正常运行,它将检索正确的图像(HTTPS 上的复选标记),如果运行不正常,则通过 HTTP 检索 X 标记。
希望浏览器不再对通过 HSTS 升级到 HTTPS 的内容显示混合内容警告。:)