强制整个站点使用 HTTPS 的好做法还是坏做法?

Posted

技术标签:

【中文标题】强制整个站点使用 HTTPS 的好做法还是坏做法?【英文标题】:Good practice or bad practice to force entire site to HTTPS? 【发布时间】:2010-11-02 12:02:07 【问题描述】:

当一切都在 HTTPS(身份验证、Web 服务等)中时,我的网站运行良好。如果我混合使用 http 和 https,它需要更多的编码(跨域问题)。

我似乎没有看到很多完全使用 HTTPS 的网站,所以我想知道这样做是不是一个坏主意?

编辑:站点将托管在可能成为带宽和 CPU 使用率问题的 Azure 云上...

10 年后编辑:正确答案是现在只使用 https。

【问题讨论】:

【参考方案1】:

HTTPS 会降低服务器吞吐量,因此如果您的硬件无法处理它,这可能是个坏主意。您可能会找到this post useful。本文(学术)还讨论了the overhead of HTTPS。

【讨论】:

学术论文的链接已失效。你能发布一个活的还是只发布论文的标题?漂亮吗? 这就是我真正喜欢 WayBackMachine 的原因! web.archive.org/web/20100215150018/http://iweb.tntech.edu/hexb/…【参考方案2】:

你失去了很多 https 的功能(主要与性能有关)

代理无法缓存页面 您不能使用反向代理来提高性能 您不能在同一个 IP 地址上托管多个域 显然,加密会消耗 CPU

也许这对你来说没问题,这真的取决于要求

【讨论】:

网页浏览器也不会缓存内容。 你可以使用带有 https 的反向代理,如果反向代理将 https 与客户端通信,而将纯 http 与后端服务器通信。 Web 浏览器会缓存 HTTPS 内容。缓存行为仅取决于 Cache-control 标头。通常,当 HTTPS 用于交易、银行业务等时,Cache-control 设置为 'no-cache' 你也可以同时运行反向代理,同时使用 https —— 只需要对 dns 和/或 NAT 有一点了解就可以了。【参考方案3】:

如果您有来自 HTTPS 页面的 HTTP 请求,您将强制用户确认加载不安全的数据。在我使用的一些网站上很烦人。

【讨论】:

只是用一个例子来扩展一下:如果你显示来自另一个 URL 的图像(例如内容或图像服务器)本身没有加密(例如 myimageserver.com/Image.jpg),那么浏览器将弹出警告页面的某些部分未加密。【参考方案4】:

如果您没有副作用,那么您现在可能还好,并且可能很高兴不在不需要的地方创建工作。

但是,几乎没有理由加密您的所有流量。当然登录凭据或其他敏感数据可以。您将失去的主要事情之一是下游缓存。您的服务器、中间 ISP 和用户无法缓存 https。这可能并不完全相关,因为它表明您只是提供服务。但是,这完全取决于您的设置以及是否有机会进行缓存以及性能是否存在问题。

【讨论】:

谢谢,不知道缓存。在我的主页上缓存对我来说可能非常重要,因为将从服务加载二进制数据。【参考方案5】:

我讨厌遇到毫无意义的全 https 站点,这些站点不处理任何真正需要加密的内容。主要是因为它们似乎都比我访问的所有其他网站慢 10 倍。就像 developer.mozilla.org 上的大多数文档页面一样,会无缘无故地强制您使用 https 查看它,而且加载总是需要很长时间。

【讨论】:

是的,我讨厌那些关心保护我的网页浏览不被窥探的网站......【参考方案6】:

使用全 HTTPS 是一个好主意 - 或至少为知识渊博的用户提供全 HTTPS 选项。

如果在某些情况下 HTTPS 完全没用,并且在这些情况下您发现性能下降,那么只有在这种情况下您才会默认或允许非 HTTPS。

【讨论】:

【参考方案7】:

这个问题,尤其是答案是OBSOLETE。此问题应标记为:<meta name="robots" content="noindex">,使其不再出现在搜索结果中。

为了使这个答案具有相关性:

    Google 现在会在网站搜索排名未使用 TLS/https 时对其进行处罚。您还会因重复内容而在排名中受到处罚,因此请注意将页面 EITHER 提供为 http OR https BUT NEVER BOTH(或使用准确的规范标签!)

    Google 还积极指出不安全的连接,这会对吓跑潜在用户的转化产生负面影响。

    这是为了追求仅支持 TLS 的网络/互联网,这是 GOOD 的事情。 TLS 不仅仅是为了保证您的密码安全——它是为了保证您的整个面向世界的环境安全和真实

    “性能损失”神话实际上只是基于过时的过时技术。 This is a comparison 表明 TLS 比 HTTP 快 (但应该注意,该页面也是加密 HTTP/2 HTTPS 与纯文本 HTTP/1.1 的比较)。

    如果您还没有证书,那么使用 LetsEncrypt 实现起来相当容易且免费。

    如果您确实有证书,那么请关闭舱口并在任何地方使用 HTTPS。

TL;DR,在 2019 年,在整个站点范围内使用 TLS 是理想的,并且建议也使用 HTTP/2。

</soapbox>

【讨论】:

是的,在 2019 年,您显然是对的。我将编辑问题。 我的答案是早早被接受的答案,但@Myndex 对此表示赞同,公平竞争和 +1

以上是关于强制整个站点使用 HTTPS 的好做法还是坏做法?的主要内容,如果未能解决你的问题,请参考以下文章

强制整个网站使用HTTPS的良好做法或不良做法?

从 C 函数返回指针是好还是坏设计? [关闭]

混合 Angular Material 和 Bootstrap。好的做法还是坏的做法?

好的做法还是坏的做法?在 getter 中初始化对象

数据库 Upserts - 好的还是坏的做法?

为多个 for 循环重新定义变量,好还是坏的做法?