是否有一些自动免费工具可以强制执行 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。