为什么不为所有东西使用HTTPS?

时间:2010-04-30 16:24:11

标签: security https

如果我正在设置服务器并拥有SSL证书,为什么我不会在整个网站上使用HTTPS而不仅仅是购买/登录?我认为加密整个网站并完全保护用户会更有意义。它可以防止诸如确定必须保护的内容之类的问题,因为一切都会如此,并且对用户来说并不是真正的不便。

如果我已经在部分网站上使用HTTPS,为什么我不想在整个网站上使用它?

这是一个相关的问题:Why is https only used for login?,但答案并不令人满意。答案假设您无法将https应用于整个网站。

16 个答案:

答案 0 :(得分:25)

除了其他原因(特别是与性能相关),您在使用HTTPS时每个IP地址*只能托管一个域。

单个服务器可以支持HTTP中的多个域,因为服务器 HTTP标头可让服务器知道要响应的域。

使用HTTPS,服务器必须在初始TLS握手期间(在HTTP启动之前)向客户端提供其证书。这意味着尚未发送服务器标头,因此服务器无法知道正在请求哪个域以及哪个证书(www.foo.com或www.bar.com )回应。


*脚注:从技术上讲,如果您将它们托管在不同的端口上,则可以托管多个域,但这通常不是一种选择。如果您的SSL证书具有通配符,您还可以托管多个域。例如,您可以使用证书* .example.com

托管foo.example.com和bar.example.com。

答案 1 :(得分:16)

我可以想到几个原因。

  • 某些浏览器可能不支持SSL。
  • SSL可能会稍微降低性能。如果用户正在下载大型公共文件,则每次加密这些文件可能会有系统负担。

答案 2 :(得分:13)

SSL / TLS几乎没有经常使用。 HTTPS必须用于整个会话,在任何时候都不能通过HTTP发送会话ID。如果您仅使用https进行登录,则明显违反The OWASP top 10 for 2010“A3:破坏的身份验证和会话管理”。

答案 3 :(得分:12)

为什么不通过挂号邮件将每个蜗牛邮件发送到防篡改的不透明信封中?来自邮局的人总是会对其进行个人保管,因此您可以非常确定没有人在窥探您的邮件。显然,答案是虽然有些邮件是值得的,但大多数邮件都不是。我不在乎是否有人读到我的“很高兴你从监狱出来!”明信片给乔叔叔。

加密不是免费的,并不总是有帮助。

如果会话(例如购物,银行等)将使用HTTPS结束,那么没有充分理由不尽早使整个会话成为HTTPS。

我的观点是,只有在不可避免的情况下才应该使用HTTPS,因为需要保护请求或响应不受中间监听的影响。举个例子,去看看Yahoo!主页。即使您已登录,您的大多数交互都将通过HTTP进行。您通过HTTPS进行身份验证并获取证明您身份的Cookie,因此您无需使用HTTPS来阅读新闻报道。

答案 4 :(得分:12)

超出系统负载的最大原因是它破坏了基于名称的虚拟主机。使用SSL,它是一个站点 - 一个IP地址。这非常昂贵,而且难以管理。

答案 5 :(得分:5)

对于高延迟链接,初始TLS握手需要额外的往返来验证证书链(包括发送任何中间证书),同意密码套件并建立会话。一旦建立了会话,后续请求可以利用会话缓存来减少往返次数,但即使在这种最佳情况下,仍然存在比正常HTTP连接所需的更多往返。即使加密操作是免费的,往返也不是,并且在较慢的网络链接上可能非常明显,特别是如果该站点不利用http流水线。对于网络连接良好的网段内的宽带用户而言,这不是问题。如果您在国际上开展业务,请求https很容易造成明显的延迟。

还有一些其他注意事项,例如会话状态的服务器维护需要更多的内存,当然还有数据加密操作。任何小型站点实际上都不必担心给定的服务器功能与当今硬件的成本。任何大型站点都可以轻松地提供CPU / W AES卸载或附加卡以提供类似的功能。

随着时间的推移以及硬件和网络功能的改进,所有这些问题都变得越来越没有问题。在大多数情况下,我怀疑今天有任何明显的差异。

可能存在操作方面的考虑因素,例如对https流量的管理限制(认为中间内容过滤器等)可能是某些公司或政府法规。某些企业环境需要在周边进行数据解密,以防止信息泄露......干扰热点和类似的基于Web的访问系统,这些访问系统无法在https事务中注入消息。在我看来,在一天结束时默认情况下不去https的原因很可能很小。

答案 6 :(得分:4)

https比普通的http更耗费资源。

服务器和客户端都需要更多。

答案 7 :(得分:3)

如果整个会话已加密,那么您将无法在代理级别(如ISP)上使用静态资源(如图像和j)进行缓存。

答案 8 :(得分:3)

您应该在任何地方使用HTTPS,但是您将失去以下内容:

  1. 由于BREACH和CRIME攻击,您绝对不应该使用基于SSL的SSL压缩或HTTP压缩。因此,如果您的响应包含会话或csrf标识符,则不进行压缩。您可以通过将静态资源(图像,js,css)放在无cookie的域上来缓解这种情况,并在那里使用压缩。您还可以使用HTML缩小。

  2. 一个SSL证书,一个IP地址,除非使用SNI,它不适用于所有浏览器(旧的Android,黑莓6等)。

  3. 您不应在您的网页上托管任何未通过SSL的外部内容。

  4. 当浏览器转到HTTP页面时,您将丢失出站HTTP Referer标头,这对您来说可能是也可能不是问题。

答案 9 :(得分:0)

除了WhirlWind的回复之外,您还应该考虑SSL证书的成本和适用性,访问问题(客户可能无法通过SSL端口进行通信,但可能,但不太可能)等。

使用SSL并不能保证安全。这种类型的保护需要内置到应用程序的体系结构中,而不是试图依赖一些神奇的子弹。

答案 10 :(得分:0)

嗯,显而易见的原因是性能:所有数据必须在传输之前由服务器加密,然后在收到时由客户端解密,如果没有敏感数据则浪费时间。它还可能会影响您的网站缓存量。

如果所有地址都使用https://而不是熟悉的http://,那么最终用户也可能会感到困惑。另外,请看这个答案:

Why not always use https when including a js file?

答案 11 :(得分:0)

https要求服务器加密和解密客户端请求和响应。如果服务器为大量客户端提供服务,性能影响将会增加。这就是为什么大多数当前的https实现仅限于密码验证。但是,随着所有Gmail在整个网站上使用SSL,随着计算能力的提高,这可能会发生变化。

答案 12 :(得分:0)

有人告诉我,在我们公司的一个项目中,他们发现SSL消息占用的带宽远远超过普通消息。我相信有人告诉我这是一个惊人的12倍数据。我自己没有验证这个,听起来很高,但是如果每个页面都添加了某种标题,而且大多数页面都有少量内容,那可能就不那么容易了。

那就是说,在http和https之间往返的麻烦和跟踪哪些页面对我来说似乎太费力了。我曾经只尝试构建一个混合它们的网站,当我们被Javascript创建的弹出窗口等复杂的东西绊倒时,我们最终放弃了计划,这些窗口附带了错误的协议以及类似的东西。我们最终只是让整个网站https减少麻烦。我想在简单的情况下,你只需要一个登录屏幕和一个需要保护的支付屏幕并且它们是简单的页面,混合搭配并不是什么大不了的事。

我不担心客户端解密的负担。通常情况下,客户端将花费更多时间等待数据通过线路而不是处理它。在用户经常使用千兆位/秒互联网连接之前,客户端处理能力可能非常无关紧要。服务器要求加密页面的CPU功率是另一个问题。可能存在无法跟上数百或数千用户的问题。

答案 13 :(得分:0)

另一个小点(可能有人可以验证),如果用户将数据键入表单项(如文本框),然后由于某种原因刷新页面或服务器崩溃一秒钟,用户输入的数据使用HTTPS丢失,但使用HTTP保留。

注意:我不确定这是否是特定于浏览器的,但我的Firefox浏览器肯定会发生这种情况。

答案 14 :(得分:0)

带有IIS 8.0的Windows Server 2012现在提供SNI,即服务器名称指示,它允许IIS中的多个SSL Web应用程序托管在一个IP地址上。

答案 15 :(得分:0)

HTTPS 是使用 SSL 保护的HTTP。您可能需要注册一个付费证书,才能维护和信任您的网站。

当您的站点需要与用户交换信息并且希望通过加密来保护信息安全时,需要使用HTTPS。

如果不是,则不需要HTTPS,但您仍然可以使用它。