仅支持 HTTPS 的网站

仅支持 HTTPS 的网站

运行仅支持 HTTPS 而不支持 HTTP 的网站是否可以接受?考虑在地址栏中输入纯域名的情况。通常网站会将用户重定向到 HTTPS 版本。

只提供 HTTPS 是有充分理由的。考虑以下场景:

  • 用户是使用 REST API 与服务器通信的开发人员。
  • 用户在发布潜在敏感信息时忘记了“http”末尾的“s”。
  • POST 通过非安全通道传输有效载荷,容易受到常见的窃听。
  • 只有在 POST 完成后,服务器才会向安全站点发送重定向代码

答案1

取决于站点。

只有当服务器根本不接受端口 80 上的连接时,才能防止出现上述情况;用户友好的重定向或甚至显示“使用 https!”的错误页面将允许发送未加密的 API 请求。当然,当它不起作用时,拨打电话的人应该在一次失败的尝试后注意到并修复他们的错误 - 希望他们没有使用敏感数据进行测试。

这次非安全通信尝试是否可以接受(希望是非敏感数据)完全取决于您的安全需求。


如果该站点仅用于 API 调用,那么关闭端口 80 就可以了。

如果用户将通过浏览器访问该网站(手动输入地址),那么不要指望能够关闭端口 80,而不会让用户感到困惑和烦恼。

答案2

我真的看不出有什么理由不这样做。如果您的网站必须始终保持安全,那么没有什么可以阻止您仅通过 SSL 提供服务。

以下是关于如何操作的知识库:Apache:将 http 重定向到 https Apache 安全连接 – 强制 HTTPS 连接

要仅允许 SSL 连接,您还可以使用SSLRequireSSL您的服务器配置中的指令。

(不确定这是否适合您,因为它会将整个服务器的端口 80 上的所有流量重定向到端口 443,但这也可以起作用):

修改 iptables 以将端口 80 重定向到端口 443:

--iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
--iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
--iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 443

相关内容