网站部署 HTTPS 中需要做的事情

news/2024/4/27 14:26:30/文章来源:https://blog.csdn.net/weixin_34293246/article/details/89270814

这篇文章首发于我的个人网站:听说 - https://tasaid.com/,建议在我的个人网站阅读,拥有更好的阅读体验。

这篇文章与 博客园 和 Segmentfault 共享。

前端开发QQ群:377786580

这篇文章是基于我在迁移 https://tasaid.com 的时候,和在公司跟进部署 HTTPS 的一些经验所编写。收录在《Said - 从 HTTP 到 HTTPS 》系列:

  • 从 HTTP 到 HTTPS - 什么是 HTTPS

  • 从 HTTP 到 HTTPS - IIS 部署免费 HTTPS

  • 从 HTTP 到 HTTPS - 网站部署 HTTPS 中需要做的事情

部署到 HTTPS 会发生什么

HTTP 协议和 HTTPS 协议是不兼容的,即 HTTPS 和 HTTP 是不可互相访问的 (混合资源),当 HTTPS 页面中包含 HTTP 内容的时候,浏览器会向用户抛出警告,这个网页是加密的,但是却包含不安全的元素,即混合资源 (Mixed Content)。

混合资源

随着 chrome 的 安全计划,今后以下的 API 只能在 安全环境 中使用:

  • Geolocation - 获取用户地理位置

  • Devicemotion / orientation - 设备方向和运动信息

  • Encrypted Media Extensions/EME - 加密媒体扩展

  • getUserMedia - 采集摄像头/音频/屏幕信息

实测中,当前获取用户地理位置 API navigator.geolocation.getCurrentPosition 已经只能在安全环境 (可以理解为 HTTPS 环境)中使用,在chrome下,非安全环境使用该 API 会显示警告:

getCurrentPosition() and watchPosition() no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.

做哪些事

自适应协议资源路径

传统的资源路径会一般会写成绝对路径和相对路径:

<img src="/static/bar.jpg"/>
<img src="http://tasaid.com/static/bar.jpg" />

绝对路径的资源建议使用 // 语法让它兼容 HTTP/HTTPS,//语法表示这个资源的访问协议和当前页面保持一致,如果当前页面是 HTTPS 的,则会采用 HTTPS 协议访问,如果是 HTTP 的,则使用 HTTP 协议访问。

<img src="//tasaid.com/static/bar.jpg" /><!--https://tasaid.com 中会访问 https://tasaid.com/static/bar.jpg-->

异步请求

相对路径下的异步请求没有问题,绝对路径的请求会有问题:

$.ajax('http://tasaid.com/user/get')

如果请求的 url 是兼容 HTTPS 的话,则可以在 HTTPS 环境下使用 https:// 访问,否则需要服务器做一个 HTTPS包装跳转,将原 url 的请求在自己的服务器做一层转发,表单提交同理。

$.ajax('/httpsRedirect?url=http%3A%2F%2Flinkflys.com%2Fuser%2Fget')

iframe

iframe 只能是被嵌入的 url 也同样支持 HTTPS,目前本人并未找到合适的方案。当然如果你们服务端真心 NB 的话也可以像某大型搜索引擎一样把需要内嵌 iframe 的站点抓到自己的服务器上。

HTTP严格传输安全协议

HTTP 严格传输安全协议( HTTP Strict Transport Security,简称 HSTS )是 互联网工程任务小组 (Internet Engineering Task Force,简称IETF) 发布的互联网安全策略,后者负责互联网标准的开发和推动。网站可以选择使用 HSTS 策略,让浏览器强制使用 HTTPS 协议访问。

为什么要强制访问呢? 因为传统的 HTTP 跳到 HTTPS 都依赖服务端 301/302 跳转,例如访问 http://tasaid.com 跳转到 https://tasaid.com,而这次强制跳转的通信,是基于 HTTP 的,所以是可能被劫持的。

设置 HSTS 之后,浏览器会在本地替换协议为 HTTPS 然后访问服务器,而不用再依赖服务器跳转,可以更多的减少会话劫持攻击。

HSTS 是一个响应头,只能用于 HTTPS 响应,HTTP 环境下会忽略掉这个响应头:

Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]
参数释义
max-age指定的时间内 (单位是秒),网站必须使用 HTTPS 协议来访问
includeSubDomains子域名也必须通过 HTTPS 协议来访问
preload让浏览器由安全域名列表 (Preload List) 决定是否本地替换为 HTTPS 请求

最后这个 preload 可能有点抽象,就是各大浏览器厂商 (Chrome/Firefox/IE/Safari/Edge) 共同维护的一个域名列表 (Preload List),你可以 在这里查询 ,chrome 浏览器可以直接在本地访问 chrome://net-internals/#hsts 查询。

设定 preload 参数,浏览器会 根据当前网站满足的条件 尝试把网站加入这个域名列表 (Preload List),其他用户再访问这个网站的时候,如果这个网站域名存在于这个域名列表中,则自动启用 HTTPS 访问。

当用户第一次访问一个从来没访问过的网站时,本地是没有 HSTS 信息的,所以这个第一次的会话仍然是可能被劫持的。preload 就是为了解决这个第一次会话劫持的问题的。

值得注意的是:一旦 HSTS 生效,在 max-age 指定的时间内,你再想把网站重定向为 HTTP,之前的老用户会被无限重定向。而且一旦网站证书错误,用户无法选择忽略。

HSTS 是个大招,不要随便开,不然技能冷却时间的时间内。

结语

至此,《Said - 从 HTTP 到 HTTPS 》 系列已经完结。当今互联网上多数站点都陆续部署上或者正在部署 HTTPS,主要是因为 HTTPS 的安全性,以及当前主流的浏览器支持的 HTTP/2.0 需要 HTTPS 为基础。同时,百度也正在 积极推动 HTTPS的收录,而 google 也声明了 HTTPS 会提升一点点的网站排名,但变化不会很明显。

最简单直观的一个情况,常见的流量劫持 —— 比如你的手机访问某个网站,网页中被某些不良的运营商劫持,强行插入了一些广告:

流量劫持

web 发展迅猛,技术日新月异层出不穷。web 的安全性同样是一场持久的攻防战。而 HTTPS 的普及,为 web 通信构建了更加良好和安全的根基。尽快给你的网站也部上 HTTPS 吧,迎接更好的 web 时代。

这篇文章首发于我的个人网站:听说 - https://tasaid.com/,建议在我的个人网站阅读,拥有更好的阅读体验。

这篇文章与 博客园 和 Segmentfault 共享。

前端开发QQ群:377786580

参考和引用

  • 屈屈 - 为什么我们应该尽快升级到 HTTPS?

  • HTTP 2.0的那些事

  • 维基百科 - HTTP严格传输安全

  • 将域名加入 HSTS Preload List

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_785220.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单几步教你做你国际化网站

什么是国际化&#xff1f; 国际化故名思意&#xff0c;就是可以做到一个国际化的标准&#xff0c;就是每个国家的人都可以看的懂你网站的内容&#xff0c;可以中英日韩文切换。 看下面的图&#xff0c;有中文或者英文可以选择你看的懂的语言&#xff1a; 好了&#xff0c;介绍…

99designs荣获SmartCompany Awards最佳网站奖

A quick shout out to the guys who work at SitePoint’s sister company, 99designs.com, who last week took out the “Top Website Award” in the 2008 SmartCompany Awards. The awards honor the fastest growing and most innovative companies of Australia in 2008.…

帮助中心 开源_开源资金网站microPledge寻求帮助

帮助中心 开源In the open source world, “software bounties” are a familiar concept — money is raised for a developer to implement a new feature, write documentation, or create a new piece of software. Since it launched last August, Christchurch, New Zeal…

seo规范_使用Google的新规范元素改善SEO

seo规范Avoid duplicate content. Every good Search Engine Optimization expert will tell you that original content is the best way to succeed in your attempt to climb the slippery search engine slope. Copying content from elsewhere or syndicating the the sam…

python scrapy 实战简书网站保存数据到mysql

1:创建项目 2&#xff1a;创建爬虫 3&#xff1a;编写start.py文件用于运行爬虫程序 # -*- coding:utf-8 -*- #作者: baikai #创建时间: 2018/12/14 14:09 #文件: start.py #IDE: PyCharm from scrapy import cmdlinecmdline.execute("scrapy crawl js"…

Flask项目之手机端租房网站的实战开发(十)

说明&#xff1a;该篇博客是博主一字一码编写的&#xff0c;实属不易&#xff0c;请尊重原创&#xff0c;谢谢大家&#xff01; 接着上一篇博客继续往下写 &#xff1a;https://blog.csdn.net/qq_41782425/article/details/86488529 目录 一丶区县信息前端编写 二丶发布新房源后…

MVC4.0网站发布和部署到IIS7.0上的方法

最近在研究MVC4&#xff0c;使用vs2010&#xff0c;开发的站点在发布和部署到iis7上的过程中遇到了很多问题&#xff0c;现在将解决的过程记录下来&#xff0c;以便日后参考&#xff0c;整个过程主要以截图形式呈现 vs2010的安装和mvc4的安装不在本次记录之列&#xff0c;主要记…

抓取某一个网站整站的记录

2019独角兽企业重金招聘Python工程师标准>>> 经常由于某些原因我们需要爬取某一个网站或者直接复制某一个站点&#xff0c;到网上找了很多工具进行测试&#xff0c;试了很多各有各的问题&#xff0c;最终选择了Teleport Ultra&#xff0c;用起来效果很好&#xff1b…

防弹您的Drupal网站

“When you steal money or goods, somebody will notice it’s gone. When you steal information, most of the time no one will notice because the information is still in their possession.” – Kevin Mitnick, The Art of Deception, 2003.“当您窃取金钱或商品时&am…

Magento电子商务网站的SEO指南

Magento is only five years old but is already the most popular open-source eCommerce platform on the net, boasting a community of over 150,000 online retailers. Magento只有5岁&#xff0c;但已经是网络上最受欢迎的开源电子商务平台&#xff0c;拥有超过150,000个…

使用WordPress构建非博客网站

This post digs into how you can use WordPress to run a regular, non-blog website. 这篇文章深入探讨了如何使用WordPress来运行常规的非博客网站。 WordPress began as a blogging platform and has a long-established dominance in the world of blogging. No matter w…

2m带宽允许多少用户访问_您有多少用户需要可访问的网站?

2m带宽允许多少用户访问The Web Content Accessibility Guidelines (WCAG) came into existence in order to provide equal access and equal opportunity to people with disabilities. If the Web is accessible, many people with disabilities can communicate and intera…

谷歌深度神经网络_本周关注我们:轻松阅读,神经网络和Google召集不良网站

谷歌深度神经网络发展更好的体验 (Developing a Better Experience) With the wide variety of devices people use to browse the web today, steps are being taken to try and maintain peoples quality of experience. Google are now calling out pages that will not wor…

modern php_如何使用Modern.IE在本地测试您的网站

modern phpThis article was sponsored by Modern.IE. Thanks for supporting the sponsors that make SitePoint possible! 本文由Modern.IE赞助。 感谢您支持使SitePoint成为可能的赞助商&#xff01; There’s no shortage of front end tools to help us test the qualit…

web应用程序和web网站_Web应用程序是未来

web应用程序和web网站Native mobile apps are a little weird, if you stop and think about them. 如果您停下来考虑一下&#xff0c;本机移动应用程序会有些奇怪。 The average mobile app weighs around 20MB, often requires an internet connection in order to be used …

joomla一键部署_如何在阿里云ECS上部署和托管Joomla网站

joomla一键部署This article was originally published on Alibaba Cloud. Thank you for supporting the partners who make SitePoint possible. 本文最初发表在阿里云上 。 感谢您支持使SitePoint成为可能的合作伙伴。 Joomla! is a free and open source content manageme…

seo策略_改善参与度指标的5种基本SEO策略

seo策略Every time someone types in a search query on Google, they’re given a list of results. 每当有人在Google上输入搜索查询时&#xff0c;就会得到一个结果列表。 The way in which those results are ordered is a highly complex algorithmic process that take…

wordpress环境安装_为什么暂存环境对于WordPress网站至关重要

wordpress环境安装This article is part of a series created in partnership with SiteGround. Thank you for supporting the partners who make SitePoint possible. 本文是与SiteGround合作创建的系列文章的一部分。 感谢您支持使SitePoint成为可能的合作伙伴。 Have you …

什么是您网站的正确图像格式?

This article is part of a series created in partnership with SiteGround. Thank you for supporting the partners who make SitePoint possible. 本文是与SiteGround合作创建的系列文章的一部分。 感谢您支持使SitePoint成为可能的合作伙伴。 As of March 2017, images m…

seo服务端渲染_我应该向SEO服务收取多少费用?

seo服务端渲染Good SEO might be the very reason you’re reading this article. As its name implies, SEO is the process of optimizing a website or web page to maximize visibility in search engine results, and it is hugely important for any business that maint…