内容简介:StackOverflow转向默认使用HTTPS
StackOverflow 的首席架构师Nick Craver发表了一篇 博文 ,宣布StackOverflow迁移到HTTPS。在该过程中,他们经历了一些技术挑战,包括对数百个域的支持、URL迁移、用户生成内容处理,以及如何达到网站所需的严格性能需求。
这次迁移总体上历时四年,但Craver强调,该工作一直以来都并非是工作重点。例如,网站上并不存在财务信息或是信用卡支付,网站信息也并非需安全防护的高价值信息。Craver指出,事实上,StackOverflow总是将性能置于安全之上:
我应指出,性能是我们的首要驱动力,而非网站的安全性。虽然我们也需要安全性,但是安全本身并不值得我们付出对整个网站部署HTTPS所花费的时间。
Craver解释说,HTTP/2的广泛采用及在性能上的优点是他们升级到HTTPS的主要驱动力。这些优点包括: Request/Response多路复用(Multiplexing) 、 服务器推送技术 (Server Push), 头部压缩 (Header Compression)、 数据流优先 (Stream Prioritization)和 更少的域(Origin)连接 等。由于浏览器并不支持在HTTP上实现HTTP/2,因此迁移到HTTPS不仅是一个性能上的需求,同时也是一个安全上的需求。
StackOverflow具有上百个域和子域。站点的主证书中包括了StackOverflow的全部主域,以及由通配符表示的域。在这种多个域的证书和IP一致的情况下,可利用HTTP/2提供的机制,支持浏览器对多个域使用单一的共享连接,这将提高性能。
在转向HTTPS的过程中,还需要做一些域迁移工作。例如,需要将“meta”域从“meta.*.stackexchange.com”转化为“*.meta.stackexchange.com”。Craver特别指出,这样做是因为通配符必须位于域名的最左边,单一的通配符更易于维护。
此外,网站中的敏感cookies现在是从顶级域继承而来的,原先可访问它们的域已经被移动了。Craver给出了一个例子,“SendGrid”标签现已移动到“stackoverflow.email”域中。
Craver还指出,网站中存在着大量HTTP用户生成内容,例如提问中给出的图片、用户配置信息、Youtube视频等。在迁移时所采取的第一步,是对所有新的用户生成内容强制使用HTTPS,将HTTP内容限定为遗留内容。然后,下一步是对遗留内容的迁移。其中的大部分内容仅需要进行查找并替换即可。对于那些团队把握不准的内容,如果内容工作异常,那么它或者被转化为HTTPS,或者被转化为一个链接。
JavaScript代码中也存在着数以千计的链接,这些链接基本上是使用HTTP的,甚至位于不同的“meta”域中。据Craver介绍,他们是逐个代码分别处理的,使用“ <site>.Url(‘/path’)
”调用替换了这些连接。只要启用了特性标识,这将从根本上转化这些链接为HTTPS。
Craver强调,他们也非常重视避免丢失任何来自Google的流量,这是网站流量的重要来源,因而也是网站收入的主要来源。尽管Google所需的更改非常简单(将301跳转从HTTP更改为HTTPS,并更新权威链接),团队也必须要慎重,以免犯错误。
迁移最后还会涉及WebSocket,需要将所有事情转换为WebSocket加密,这也是为避免影响网站性能而在功能上的直接需要。据Craver介绍,他们可一次同时打开近五十万个并发的websocket连接。
该博文的内容很长,但是值得一读。
查看英文原文: Stack Overflow Becomes HTTPS by Default
以上所述就是小编给大家介绍的《StackOverflow转向默认使用HTTPS》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了
- 吐槽:Python 正在从简明转向臃肿,从实用转向媚俗
- Tinder转向Kubernetes的经验分享
- ASP 信息提示函数并作返回或者转向
- 转向 AIOps 之前,你应该做好哪些准备?
- 译:在Go中转向领域驱动设计
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C语言的科学和艺术
罗伯茨 / 翁惠玉 / 机械工业出版社 / 2005-3 / 55.00元
《C语言的科学和艺术》是计算机科学的经典教材,介绍了计算机科学的基础知识和程序设计的专门知识。《C语言的科学和艺术》以介绍ANSI C为主线,不仅涵盖C语言的基本知识,而且介绍了软件工程技术以及如何应用良好的程序设计风格进行开发等内容。《C语言的科学和艺术》采用了库函数的方法,强调抽象的原则,详细阐述了库和模块化开发。此外,《C语言的科学和艺术》还利用大量实例讲述解决问题的全过程,对开发过程中常见......一起来看看 《C语言的科学和艺术》 这本书的介绍吧!