部署 HSTS 提升网站安全性

news/2024/5/21 0:15:01/文章来源:https://blog.csdn.net/yetugeng/article/details/89510756

什么是 HSTS?

HSTS 是 HTTP Strict Transport Security 的缩写,字面意思就是“HTTP 严格传输安全”。在 2012 年 11 月发布了RFC 文件。其实质,是通过服务器和浏览器配合起来,强制用户使用安全连接来访问服务器。

HSTS 大致原理是,服务器在 SSL 连接的网站请求返回中,带上一个响应头(Response Header)信息,要求浏览器使用强制安全,则在下一次用户访问此域名时,浏览器会自动探测用户是否使用了安全连接,如果没有的话,自动在浏览器端重设了 URL,通过安全连接来访问服务器。避免了用户通过不加密的协议与服务器进行通信。

设计 HSTS 的目的是什么?

每当出现一种安全机制,我们都要想想这背后的目的是什么。其实我也并不知道,接下来直接谈谈我的个人想法好了。目前为止,我们所用到的常见浏览器,Chrome,Firefox,IE,都是没人使用非加密通信的 HTTP 协议访问目标网站的,除非用户手动输入来指定使用的协议是 HTTPS,浏览器才会跟服务器进行加密通信。

在这种情况下,很多用户的使用习惯是键入域名来访问目标网站,那么浏览器就会自动选用 HTTP 协议,如果网站提供 HTTPS 服务,服务器一般会返回 302,要求用户重新使用 HTTPS 连接访问网站,以获得加密的连接通信。这种场景无论是对用户而言,还是对网站服务而言,都是自然而然的选择。

在现今的网络环境下,越来越多网站提供了全站 HTTPS 服务,但是,用户的习惯已经养成,并不会因为网站提供了 HTTPS 服务,就会每次输入网址的时候手动输入协议,毕竟用户根本不懂技术。那我们就要问了,如果用户每次都是先访问 HTTP 服务,然后经由服务器的跳转再进入 HTTPS 服务可不可以呢,当然是可以的,但是,这么做是有风险的。如果用户身处一个有嗅探或者过滤的网络,那么用户首次连接网站服务的时候,其会话可能就会被窃取,其身份可能会被恶意伪装。如果,有恶意的攻击者,甚至可能在这个过程中,施行中间人攻击。届时,用户根本不知道自己的一切,已经被人看光了,还以为自己在进行安全的 HTTPS 通信呢。

于是,必须有一种浏览器厂商和服务商共同提供的机制,帮助用户直接选择使用 HTTPS 服务,避免跳转导致的弊端,我们就有了 HSTS,这个协议的作用就是服务器通知客户端,以后访问本服务的时候,一律使用 HTTPS 进行访问。

HSTS 的使用

 从 2012 年发布至今,主流的浏览器基本都已经支持了。开启 HSTS 也是非常简单的。只要在 HTTPS 服务的返回的 Response Header 里面添加一条 HSTS 的声明就可以开启这个特性了。如下是一个 Nginx 下的配置范例。其原理只是标准的 HTTP Header 而已,其他的 Web 服务器的配置,就不再赘述了,可以查阅相关文档。

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";

这行配置,要增加到提供 HTTPS 服务的段落里面,浏览器如果在访问一个 HTTPS 的网站的时候,收到了这个响应头信息,会首先校验服务器的证书链,如果都正确无误,会把这个服务器的域名加入到本地一个“已知主机列表”中,这是一个类似哈希索引的东西,以后访问任何 HTTP 的服务的时候,都会查询此索引,一旦发现查到了,就在用户的电脑本地直接产生一个 307 内部跳转(Chrome 的行为),让用户连接到对应的 HTTPS 服务上。

因为,整个机制很大一部分依赖客户端的行为,所以,我们必然面临一个问题,就是下发到客户端的参数是不易维护的。上面展示了这个特性涉及到的三个参数。其中必填的参数是 max-age 这个参数指定了一个 HSTS 主机的生效时间,单位是秒,上面填写的时间 31536000 是一年时间。如果网站的 HTTPS 临时无法访问,收到过 HSTS 的浏览器,也将拒绝访问网站提供的 HTTP 服务,也即,优雅降级的可能性被消除了,所以在使用的时候要做好运维工作和风险评估。设置合理的 max-age 也是很必要的。如果设置得太短,增加了用户暴露在风险中的机会,如果设置得太长,则一定程度提高了网站运维的风险。

第二个参数 includeSubdomains 是可选的参数,主要是声明当前 HSTS 主机域名的所有子域也都是 HTTPS 服务,这个参数的设置,会有一定的风险,可能导致有些网站的子域不可用,如果不能确定网站的所有子域都是 HTTPS 服务,不应该添加这个参数,毕竟有些网站,业务还没有扩张,一开始在根域设定了这种参数后,导致子域都必须 HTTPS 了,那可就麻烦了。例如,一开始你购买了 company.com 的域名开始提供服务,到了后期,发现流量上涨,开始部署 CDN,这时候,你发现,cdn.company.com 这个域名已经被加入用户 HTST 里面的,这就很糟糕了。

第三个参数,说得是预加载特性。从上面所有的行为里,我们可以看到,即使使用了这个策略,用户至少还要有一次机会暴露在非安全的网络之下,虽然被入侵的概率已经很低了,但是对于一个服务来说,单是拦截首次访问服务的新客,也可以给服务方造成巨大损失。能不能彻底杜绝这种可能性呢?于是就有了预加载服务,网站服务首先把自己的域名提交给浏览器的厂商进行认证,添加到 Preload 列表里,这样,早在用户听说你的网站域名之前,浏览器里已经预置了这个域名。这无异一柄双刃利剑,一方面提供了近乎绝对的安全策略,另一方面,极大限制了网站的方案选择。Preload 列表影响范围更广,清除更加麻烦。

如果服务方希望清除掉 HSTS 的话,需要将 max-age 设置为 0,但是,这个尴尬就跟客户端分发是一样的,如果用户在此期间没有访问你的网站,那么 HSTS 的记录是删不掉的,所以说,max-age 才显得可贵,切不能设置得时间太长。

总结

总体来说,使用安全连接协议,对用户来说,对服务提供商来说,都是好事。在现今这个网络环境下,还是尽量使用 HSTS 吧,尽快提升互联网整体环境的安全。这已经是大势所趋,苹果,微信,都在强势推广 HTTPS,而像 Let’s Encrpyt,中国的七牛,腾讯云等,也都提供了免费的一年期 SSL DV 证书给每个用户,所以,放心大胆的开启 HSTS 策略吧。

 

转自:

https://sexywp.com/deploy-hsts-import-security.htm

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

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

相关文章

网站搭建 -- 部署Https 证书 缺少 Root CA Certificate

测试网站 我们在搭建web站点时,为了安全,现在都要使用SSL证书。 一个好用的测试网站可以检测你的SSL配置是否正确。 https://www.geocerts.com/ssl-checker 该网站可以自定义检测的端口(大部分检测网站都只能使用默认端口443)…

揭秘DDoS黑市:50块钱就能击瘫一家网站

前两天,阿里云在微博上发布一则声明,称12月20-21日间,部署在阿里云上的某知名游戏公司,遭遇了全球互联网史上最大的一次DDoS攻击。 DDoS是一种在互联网地下非常常见的攻击方式,可以称作黑客入门的基础技巧。但要做到像…

WordPress开发之创建WordPress会员网站(一)

问题 Wordpress是世界范围内广泛推荐的网站开发平台,尽管创建一个基于WordPress的基础型博客网站是一个一小时左右就能完成的工作,但是,要想把这个网站进一步完善,特别是把WordPress网站修改成一个真正意义上的中小型电子商务网站…

HTML5初学者福利!11个在线学习网站推荐

2019独角兽企业重金招聘Python工程师标准>>> HTML5的强大及流行趋势,让更多的人想要系统的对它进行学习。而大多数人获取HTML5知识的重要途径都是网络,不过面对五花八门的搜索结果,是不是觉得摸不着头脑,无法抉择&…

Scrapy和Django实现蚌埠医学院手机新闻网站制作

最终效果(不看效果就讲过程都是耍流氓): 实现过程如下: 框架: Scrapy:数据采集Django:数据呈现目标网站:蚌埠医学院 学院新闻列表:http://www.bbmc.edu.cn/index.php/view/viewcate/0/ 第一步&a…

收集喜欢的网站元素

1、https://letters-inc.jp/2、https://clarity.io/。。。

高性能网站建设进阶指南:Web开发者性能优化最佳实践

高性能网站建设进阶指南:Web开发者性能优化最佳实践 基本信息 作者: 口碑网前端团队 出版社:电子工业出版社 ISBN:9787121105449 上架时间:2010-4-9 出版日期:2010 年4月 开本:16开 其他详细…

WordPress 捐赠插件漏洞,导致网站遭受零日攻击

开发四年只会写业务代码,分布式高并发都不会还做程序员? 使用“Total Donations”插件的 WordPress 网站,Defiant 建议网站管理员从他们的服务器中删除该插件,防止黑客利用其代码漏洞攻击网站。过去一周,来自 Defian…

分享一些好用的网站

前言 这两年收藏了不少网站,特地整理一下,把一些大家都可能用得上的分享出来,希望能对你有用。 考虑到有一些网站大多数人都知道,所以我就不列出来了。 我把这些网站分为了几大类: 工具类素材类社区类工具类 1、start.…

阿里云 - 免费 CA 证书申请 + Nginx 实现网站https部署 + http强制跳转https

1,进入阿里云,找到导航栏下安全下有个CA证书服务; 2,点进去之后点击立即购买; 3,点进来默认是看不到免费的,点击Symantec; 4,然后点击增强型; 5&#xff…

程序员网站推荐

希望你能遇到更好的网站。 1.git学习 猴子都能懂的GIT入门 https://backlog.com/git-tutorial/cn/stepup/stepup1_1.html 2.问答平台 stackoverflow https://stackoverflow.com/ n.遇到了再添加 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可…

6个超给力网站资源共享 一分钟吊起你的兴趣

超给力的网站资源分享给你们,娱乐、生活、学习应有尽有,赶紧来看看吧! 千千音乐:http://music.taihe.com/songlist千千音乐是中国音乐门户之一,为你提供海量正版高品质音乐,权威的音乐榜单,快速的新歌速递,契合你的主题电台,人性化…

51CTO网站博客更新声明

51CTO博客自成立以来,受到网友广泛关注,为了能够提供更好的服务,51CTO网站决定对博客栏目进行大幅度改版。 截止到6月25日,网站后台管理界面风格已经调整完成,此目的是为了能让广大使用者更方便地使用我们的博客产品。…

学习前端的好处,网站文章复制不了?别扯.

很多时候我们在网上浏览文章或查看资料的时候,看到写的非常好的句子想要复制粘贴保存一下,这是拖动鼠标,发现“选不中,复制不了”,哎,这时候咱们前端高能出手,这都不是事儿!很简单&a…

python爬取证券之星网站

周末无聊,找点乐子。。。#coding:utf-8 import requests from bs4 import BeautifulSoup import random import time#抓取所需内容 user_agent ["Mozilla/5.0 (Windows NT 10.0; WOW64)", Mozilla/5.0 (Windows NT 6.3; WOW64),Mozilla/5.0 (Windows NT …

seo我告诉你

seo我告诉你,这回seo真的告诉你百度云链接 链接:http://pan.baidu.com/s/1qYpM9y8 密码:mad6 seo优化教程:

介绍MyBatis代码生成网站(六) --- SQL方法的选择

为什么80%的码农都做不了架构师?>>> 一.简介 网址: http://www.fwjava.com 操作流程: 详见“ 介绍MyBatis代码生成网站(一) --- 基本操作 ” 需求描述: 在实际的应用开发中 , 我们希望在14个大类26个SQL方法中 , 选择生成自己想要的几个特定方法. 那么&…

python多页网站目录_Python爬取网址中多个页面的信息

通过上一篇博客了解到爬取数据的操作,但对于存在多个页面的网址来说,使用上一篇博客中的代码爬取下来的资料并不完整。接下来就是讲解该如何爬取之后的页面信息。 一、审查元素 鼠标移至页码处右键,选择检查元素接着屏幕下方就会出现对应的ht…

给自己的网站加入智能聊天功能

引言 现在突然发现有很多 QQ 群都开启了群机器人的功能,其中有两个角色,他们分别是:Baby Q 和 QQ 小冰。在 Q 群中,你可以对他们进行任意程度的调戏,不过,遗憾的是鱼和熊掌不可得兼,一个群只能进…

用PHP做采集功能网站的思路

2019独角兽企业重金招聘Python工程师标准>>> 1、指定一个列表页,用curl或file_get_contents将页面读取进来; 2、用正则或者XML分析DOM,获取到列表中文章的超链接,将其保存为一个任务数组; 3、遍历数组&…