【发布时间】:2018-04-27 12:50:53
【问题描述】:
在 Apache HTTPD 服务器上配置,网络上的许多文章建议通过将所有 HTTP 请求(永久)重定向到 HTTPS 来强制执行 HTTPS 协议。
以下是我理解的用户尝试访问同时支持 HTTP 和 HTTPS 的服务器时发生的情况:
- 客户端的用户代理(例如,但不仅限于 Web 浏览器)向 http://my.domain.com 发送请求。
- 服务器在端口 80 上接收请求,并将永久重定向(代码 301)发送到 https://my.domain.com。
- 客户端的用户代理收到响应。给定状态码,它会向https://my.domain.com发送相同的请求。
- 服务器在 443 端口收到请求,并返回想要的内容。
因此,如果请求包含敏感数据,则在第 1 步和第 2 步之间,中间人可以在请求中以非加密方式恢复它。
如果客户端使用网络浏览器,该浏览器会缓存 301 重定向,下次客户端使用 HTTP 发送请求时,它会自动使用 HTTPS 发送。
但是,如果客户端经常清除缓存怎么办?或者使用不存储永久重定向的网络浏览器以外的其他用户代理? 我们不会在这里失去 HTTPS 的好处吗?
具体示例:REST API,请求包含敏感数据。可以从任何 HTTP 客户端(在线、嵌入软件或网站、独立)调用此 API。
在这种情况下,为了强制使用 HTTPS,禁用服务器级别的 HTTP 支持会更好吗?
2017-11-14 编辑:
sys0dm1n 在下面告诉我有关 HSTS 的信息。但是这种机制提供的安全性完全取决于用户代理是否符合规范。
2017-11-15 编辑:
我在收到第一个答案后编辑我的帖子,以明确我的担忧。
【问题讨论】:
-
也许你会发现它有帮助:stackoverflow.com/questions/4365294/….
标签: apache http security https