当前位置:  开发笔记 > 后端 > 正文

除了在.htaccess中强制使用HTTPS之外,我还需要启用HSTS吗?

如何解决《除了在.htaccess中强制使用HTTPS之外,我还需要启用HSTS吗?》经验,为你挑选了2个好方法。

我对这些东西一无所知,所以请回复你的ELI5.

按照我的提供商Dreamhost的说明,我安装了SSL证书,然后将这些行添加到我的.htaccess文件中,以强制将HTTP请求重写为HTTPS请求.

# Redirect http requests to https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

一切似乎都正常工作,即:每次我尝试使用HTTP访问该域下的页面时,都会将其重写为HTTPS,并在地址栏中显示"安全"图标.

我的问题是,我是否还需要启用HSTS?阅读它,它似乎与.htaccess文件的先前更改完全相同.以下是A2 Hosting(不是我的提供商)的摘录:

启用HSTS

为站点启用HSTS后,Web浏览器会自动更改任何不安全的请求(http://)以保护请求(https://).要启用HSTS,您只需在网站的.htaccess文件中添加标题即可.Web浏览器识别此标题,然后在不需要您进一步干预的情况下处理其余内容.

他们建议将此添加到.htaccess:

Header set Strict-Transport-Security "max-age=31536000" env=HTTPS

另一个教程,这次特定于Dreamhost,说启用HSTS以及强制.htaccess文件中的HTTPS,但并没有真正说明原因.此页面显示略有不同的内容:

Header set Strict-Transport-Security "max-age=31415926; includeSubDomains; preload" env=HTTPS

我需要"https重写"代码段和HSTS吗?或者只有"https重写"代码片段足够好?我是否需要HSTS代码,如果是这样,我的帖子中两行HSTS代码之间有什么区别?



1> Srdjan Grubo..:

HSTS让浏览器知道https默认只连接,但每个不同的标志做一些不同的事情:

includeSubdomains

这意味着,如果你的网站上mydomain.com,该政策将适用于所有子域(即foo.mydomain.com,bar.mydomain.com等).如果没有这个.该政策仅适用于相关的确切域名.

预紧

虽然HSTS在概念上很棒,但是第一次有人键入mydomain.com浏览器时会尝试联系您的网站,http因为它不知道您的网站上https有一个MITM攻击者空间来为您提供恶意版本的网站(又名TOFU)问题).要解决此问题,https默认情况下应该联系的站点的浏览器有一个集中列表,但是为了能够获得该列表,您必须preload在该标题中包含该标志.你可以在这里看到更多相关信息.


@AlwaysLearning两者都做。没有重定向的HSTS是没有用的,并且没有HSTS的重定向可以被中间人攻击拦截。

2> Barry Pollar..:

如果未明确指定方案(http或https),则默认为http.

因此,需要重定向才能将其重定向到您首选的https版本,因为大多数输入URL的访问者都不会包含该方案,因此请转到http版本.

HTTP严格,运输和安全(HSTS)是一种安全的方法,以确保您始终停留在HTTPS.它实际上并不是要取消对重定向的需求.特别是HSTS的工作原理是向您的Web浏览器发送一条消息(使用HTTP响应标题),说"请在下一个X时间内仅使用https进行此站点".只有在通过https访问网站时才会发送此消息.因此,如果您不首先重定向,那么很多访问者可能甚至没有意识到您有一个https站点,因此不会获得HSTS指令.

HSTS主要用于将网站的默认值更改为https,并防止中间人(MITM)攻击可能会阻止您使用http:例如,如果您连接到黑客的wifi网络并转到银行网站,如果它通过https完成,他们将无法劫持此连接,但如果通过http完成,他们将能够拦截http请求并阻止重定向发生,让你保持http并拦截所有消息来往你的银行.

您可以在Web浏览器的代码中"预加载"HSTS指令,这样可以提供更高的安全性,因为您不需要首先通过https访问站点以获取HSTS指令.应该注意的是,基本上没有办法从此回来,只有在你真正了解HSTS时才应考虑这一点.有很多很多请求要从Preload列表中删除网站,这需要至少3个月的Chrome浏览器(不保证其他浏览器)并且如果您不在https上,则会在此期间完全无法访问您的网站.所以这里有一个真正的危险!特别是如果您的某些网站是通过https(例如www.example.com)提供的,但有些网站不是(例如intranet.example.com).这也是HSTS的危险,但预加载更危险.

另一点需要注意的是,许多Web代理不会使用HSTS,尤其不会使用预加载列表(例如搜索引擎爬虫,旧版浏览器等).因此,HSTS应该再次使用,而不是替代重定向.

HSTS是一个很好的安全措施,应该被所有站点使用(一旦他们完全停止使用http),但是,像大多数安全措施一样,它确实存在风险.因此,请确保在部署之前了解它.我讨厌网站和教程,说明打开它而不解释它和风险.理论上,使用HSTS的站点可能不再需要重定向,但实际上它仍然需要第一次访问和不理解或实现HSTS的代理.

总结一下:

始终使用重定向.

强烈考虑HSTS,但首先阅读它,并从最低年龄开始,没有包括子域和预加载 - 直到你真正理解它们的含义.

如果运行高风险站点,则考虑将您的站点提交到HSTS预加载列表作为高级别的安全性,但再次注意这里的风险.只有在您真正了解HSTS并且感觉您需要此级别的安全性时才能执行此操作.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有