HTTPS 重定向实施

HTTPS 重定向实施

是否有一些自动免费工具可以强制执行 http->https 重定向,而不会影响 ht.access 文件?感谢您的任何建议!

答案1

“自动免费工具”和“服务器管理”通常不相容。“自动工具”通常是执行用户可能想要执行但手动执行起来很复杂的任务的工具,例如读取硬盘参数、将音频 CD 转储到文件等。

在管理服务器时,您需要至少在一定程度上了解自己在做什么。所以,让我们努力让您快速上手,这样您就知道自己在做什么了!

为什么要重定向到 HTTPS

HTTP 并不安全,但至少目前它是您通过浏览器访问地址时的默认方式。当您访问 时stackexchange.com,您的浏览器将默认1与端口 80 进行通信并期望获得纯 HTTP 响应。

具有中间人功能的攻击者可以拦截这个简单的 HTTP 响应并在其中插入“任何内容”,例如恶意 JavaScript、恶意软件下载等...

因此,您要确保用户尽可能少地花费时间在不安全的 HTTP 页面上,并立即重定向到 HTTPS 页面。

重定向如何工作?

当浏览器访问 HTTP 站点时,您可以发送 301 响应,同时发送相同的站点,但使用 HTTPS。这会告诉浏览器导航到该页面。所有现代浏览器都接受此类请求。

例如,在 nginx 中,执行此操作的服务器配置如下:

server {
   listen 800;
   server_name example.com;
   return 301 https://$hostname$request_uri;
}

这将接收一个请求http://example.com/foo/bar并将其重定向到https://example.com/foo/bar

这够了吗?

不,不是。如您所见,重定向仍然以纯文本形式发送。攻击者仍然可以修改它并阻止用户访问 HTTPS 站点。

因此,高速传输系统标头已创建。此标头的作用是指示浏览器,以后每次调用都应使用 HTTPS - 即使 HTTP 已明确地要求。

但这仍然使网站的首次浏览不受保护。为了缓解这种情况,你的网站应该被添加到HSTS 预加载列表。这里的想法是,服务器告诉预加载列表它们支持 HSTS 并且将始终支持 HSTS。当浏览器第一次导航到域时,它们会检查该域是否在预加载列表中,如果是,则自动导航到 HTTPS。永远不会使用纯 HTTP。

那么其他解决方案怎么样?

可以使用 JavaScript 重定向,但实际上它们并不比 HTTP 301 重定向更能保护您。事实上,它们更糟糕,因为它们要求用户下载并执行 JavaScript,而不是一个简单的、无实体的 HTTP 响应。


1从技术上讲,它会首先检查其 HSTS 缓存,但我们现在暂时跳过这一步。

答案2

可以在使用 Javascript 的页面级别,但请注意该问题的顶部评论,它说在服务器级别执行此操作更可靠、更高效。

.htaccess 是在服务器级别执行此操作的一种方法,但当然,使用服务器配置比 .htaccess 更可取。以下是使用以下方法执行此操作阿帕奇或者Nginx

相关内容