让你的HTTPS更安全-让你的HTTPS更安全开启HSTS让浏览器强制跳转HTTPS访问
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
现如今很多的站都开启了https,这是标准化建站模式,在网站全站HTTPS后,如果用户手动敲入网站的HTTP地址,或者从其它地方点击了网站的HTTP链接,通常依赖于服务端301/302跳转才能使用HTTPS服务。
而第一次的HTTP请求就有可能被劫持,导致请求无法到达服务器,从而构成HTTPS降级劫持。这个问题目前可以通过HSTS(HTTP Strict Transport Security,RFC6797)来解决。先说说说HSTS;
HSTS简介
HSTS(HTTP Strict Transport Security)是国际互联网工程组织IETF发布的一种互联网安全策略机制。采用HSTS策略的网站将保证浏览器始终连接到该网站的HTTPS加密版本,不需要用户手动在URL地址栏中输入加密地址,以减少会话劫持风险。
hsts预加载列表,可以理解为:用户在访问网站时,会判断你是http网站还是https网站。通过这个预加载列表,可以实现在用户访问之前就能知道是https。这里我用的apache,给出apache关于hsts配置内容如下:
开启HSTS让浏览器强制跳转HTTPS访问教程
部署的话,首先启用HSTS的header模块LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
上述代码放于网站配置文件中,一般是httpd.conf文件等网站配置文件。宝塔界面,可以直接点击网站,设置,切换到配置文件选项,添加内容即可。
PS:注意,是配置文件不是伪静态文件,注意添加文件位置,再你网站目录的下方一点;
HSTS响应头格式
max-age,单位是秒,用来告诉浏览器在指定时间内,这个网站必须通过HTTPS协议来访问。也就是对于这个网站的HTTP地址,浏览器需要先在本地替换为HTTPS之后再发送请求。
includeSubDomains,可选参数,如果指定这个参数,表明这个网站所有子域名也必须通过HTTPS协议来访问。
preload,可选参数,一个浏览器内置的使用HTTPS的域名列表。
然后再到 https://hstspreload.org/ 网站,提交一下你的网站。之后,各大主流浏览器就会内置你的域名到他们的hsts列表中,直接内置到浏览器中。
PS:自己站带www就提交带WWW的,不带的就提交不带的,别搞乱了喽;
问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!