将 HTTP 重定向到 HTTPS 还是拒绝使用 HTTP?

埃里亚

在 Apache HTTPD 服务器上进行配置,网络上的许多文章都建议通过将所有 HTTP 请求(永久)重定向到 HTTPS 来强制执行 HTTPS 协议。

以下是我理解的当用户尝试访问支持 HTTP 和 HTTPS 的服务器时发生的情况:

  1. 客户端的用户代理(例如 Web 浏览器,但不仅限于此)向http://my.domain.com发送请求
  2. 服务器在端口 80 上接收请求,并向https://my.domain.com发送永久重定向(代码 301)
  3. 客户端的用户代理接收响应。给定状态代码,它会向https://my.domain.com发送相同的请求
  4. 服务器在端口 443 上接收请求并发回想要的内容。

因此,如果请求包含敏感数据,在步骤 1 和 2 之间,中间人可以在请求中恢复它,但未加密。

如果客户端使用 Web 浏览器,该浏览器会将 301 重定向保存在缓存中,下次客户端使用 HTTP 发送请求时,它将自动使用 HTTPS 发送请求。

但是,如果客户端经常清除缓存怎么办?或者使用不存储永久重定向的 Web 浏览器以外的其他用户代理?我们不会在这里失去 HTTPS 的好处吗?

一个具体的例子:一个 REST API,请求包含敏感数据。可以从任何 HTTP 客户端(在线、嵌入软件或网站、独立)调用此 API。

在这种情况下,是否最好在服务器级别禁用HTTP 支持以强制使用 HTTPS ?

编辑 2017-11-14:

sys0dm1n 在下面告诉了我有关 HSTS 的信息。但是这种机制提供的安全性完全取决于用户代理对规范的遵守情况。

编辑 2017-11-15:

我在收到第一个答案后编辑我的帖子,以明确我的担忧。

贾坦

禁用http完全有帮助吗?

不,我认为不会,原因如下:大概,您的客户端/浏览器在发送请求之前不知道运行 http 的站点是否存在。当然,它会收到类似 404 或类似的错误代码,但此时,原始请求已经通过网络发送,任何“中间人”很可能已经能够观察到该请求。

作为问题的一个简单说明,这里调用了一个伪造的 http-url,它是由 Postman 制作的,它被 Fiddler 捕获。如您所见,返回502 错误,但原始请求仍包含敏感数据。

在此处输入图片说明

现在只是为了比较,如果我也这样做,但只需将 url 更改为https,我会在 Fiddler 中得到不同的结果:

在此处输入图片说明

这会尝试建立隧道,并且不会显示任何后期数据。

因此,总而言之,您最好的选择可能是启用 HSTS 并将您的站点放在HSTS 预加载列表中,这应该会阻止发送任何 HTTP 请求(至少对于大多数主要浏览器的最新版本)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用htaccess将https重定向到非http并将Http重定向到Https

来自分类Dev

在opencart中使用htaccess将https重定向到http

来自分类Dev

使用Chrome扩展程序将http重定向到https

来自分类Dev

使用301或303将http重定向到https

来自分类Dev

Jetty使用重写将HTTP重定向到HTTPS

来自分类Dev

NestJS将HTTP重定向到HTTPS /强制使用SSL

来自分类Dev

如何使用traefik将http重定向到https?

来自分类Dev

使用htaccess将http重定向到Wordpress的https?

来自分类Dev

使用重写将Apache http重定向到https

来自分类Dev

在OpenCart中使用htaccess将https重定向到http

来自分类Dev

使用fqdn名称时将Http重定向到https

来自分类Dev

使用 htaccess 将 HTTP 重定向到 HTTPS?

来自分类Dev

Laravel将Http重定向到Https

来自分类Dev

将 HTTP 重定向到 HTTPS

来自分类Dev

NGINX 将 http 重定向到 https

来自分类Dev

将 http:// 重定向到 https:// 的方法

来自分类Dev

重定向www。到非www并使用.htaccess将所有http重定向到https

来自分类Dev

重定向www。到非www并使用.htaccess将所有http重定向到https

来自分类Dev

尝试将http重定向到https时,仅使用htaccess在safari中重定向循环

来自分类Dev

如何使用301重定向而不是302将HTTP站点重定向到HTTPS站点

来自分类Dev

将http重定向到https(https将http重定向到默认值)

来自分类Dev

如何将http重定向到https和将https:// www重定向到https://

来自分类Dev

htaccess将http://和http:// www重定向到与子域配合使用的https://

来自分类Dev

使用.htaccess将所有网站链接www重定向到非www并将http重定向到https

来自分类Dev

HTTP 到 HTTPS 重定向

来自分类Dev

htaccess将https重定向到http,将.com重定向到.co.uk和http:// www。到http://

来自分类Dev

NGINX将http重定向到https,将非www重定向到ww

来自分类Dev

将http重定向到https,也将no-www重定向到www

来自分类Dev

NGINX将http重定向到https,将非www重定向到ww

Related 相关文章

  1. 1

    使用htaccess将https重定向到非http并将Http重定向到Https

  2. 2

    在opencart中使用htaccess将https重定向到http

  3. 3

    使用Chrome扩展程序将http重定向到https

  4. 4

    使用301或303将http重定向到https

  5. 5

    Jetty使用重写将HTTP重定向到HTTPS

  6. 6

    NestJS将HTTP重定向到HTTPS /强制使用SSL

  7. 7

    如何使用traefik将http重定向到https?

  8. 8

    使用htaccess将http重定向到Wordpress的https?

  9. 9

    使用重写将Apache http重定向到https

  10. 10

    在OpenCart中使用htaccess将https重定向到http

  11. 11

    使用fqdn名称时将Http重定向到https

  12. 12

    使用 htaccess 将 HTTP 重定向到 HTTPS?

  13. 13

    Laravel将Http重定向到Https

  14. 14

    将 HTTP 重定向到 HTTPS

  15. 15

    NGINX 将 http 重定向到 https

  16. 16

    将 http:// 重定向到 https:// 的方法

  17. 17

    重定向www。到非www并使用.htaccess将所有http重定向到https

  18. 18

    重定向www。到非www并使用.htaccess将所有http重定向到https

  19. 19

    尝试将http重定向到https时,仅使用htaccess在safari中重定向循环

  20. 20

    如何使用301重定向而不是302将HTTP站点重定向到HTTPS站点

  21. 21

    将http重定向到https(https将http重定向到默认值)

  22. 22

    如何将http重定向到https和将https:// www重定向到https://

  23. 23

    htaccess将http://和http:// www重定向到与子域配合使用的https://

  24. 24

    使用.htaccess将所有网站链接www重定向到非www并将http重定向到https

  25. 25

    HTTP 到 HTTPS 重定向

  26. 26

    htaccess将https重定向到http,将.com重定向到.co.uk和http:// www。到http://

  27. 27

    NGINX将http重定向到https,将非www重定向到ww

  28. 28

    将http重定向到https,也将no-www重定向到www

  29. 29

    NGINX将http重定向到https,将非www重定向到ww

热门标签

归档