删除 HTTPS 中的“s”

删除 HTTPS 中的“s”

最近,一位朋友问我是否可以对他的网站进行一些基本的安全检查。网址大致如下,https://www.example.com但是删除“https”末尾的“s”后,网站会直接将我重定向到www.example.com。在我向他提供虚假信息之前,我认为这是一个巨大的漏洞——因为他处理客户的信用卡信息。我是不是夸大其词了?这个问题有多大?

该网站最好发送错误或重定向到网站的 HTTPS 版本。我的想法对吗?谢谢

答案1

是的,任何处理敏感信息的网站都应该在 HTTPS 上运行。在 HTTP 上运行是有风险的。所以,你是对的,它应该自动重定向到 HTTPS。

答案2

删除“https”末尾的“s”后,网站会直接将我重定向到“www.example.com”

手动删除“s”意味着你自己明确访问http://www.example.com(即非 SSL 版本)

现在的情况是,大多数浏览器都会隐藏http://地址栏中的部分内容,以提高可读性(http://对大多数普通人来说,这只是技术上的混乱)。因此,它只是不显示http://在 URL 前面,但它实际上仍然存在。

因此它实际上并没有将你重定向到任何地方。事实上,没有像 这样的www.example.com协议前缀,重定向到 是不存在的http://。如果你www.example.com在地址栏中看到并选择全部 + 复制 + 粘贴,你会看到前缀http://仍然存在。如果你www.example.com手动输入没有任何协议前缀,你的浏览器会自动采用隐式http://前缀。

至于漏洞部分:任何处理敏感信息的网站(或者可能只是一般网站,取决于您的偏执程度)都应强制使用 SSL,因此甚至不支持或允许通过 进行访问http://,而只能通过进行访问https://

让我们加密每个人都可以免费在自己的网站上使用 SSL。所以基本上没有理由不是不再使用 SSL。

我个人在所有地方(我托管或管理的每个网站)都使用 Let's Encrypt。我确保任何非 SSL 访问(即每当有人访问带有http://而不是 的页面https://时)都会自动重定向到相应的https://URL。

有不同的方法可以做到这一点,但可能最简单的方法是将一个名为的文件.htaccess放在目录中public_html/,内容如下:

RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]

它会将任何未使用 SSL 的请求定向到使用 SSL 的相同 URL。

相关内容