从 http 重定向到 https 时是不是存在潜在的数据泄漏?

Posted

技术标签:

【中文标题】从 http 重定向到 https 时是不是存在潜在的数据泄漏?【英文标题】:Is there a potential data leak when redirecting from http to https?从 http 重定向到 https 时是否存在潜在的数据泄漏? 【发布时间】:2021-01-06 18:02:35 【问题描述】:

我在 Heroku 上托管的 Fastify 服务器中有以下代码:

this.server.addHook('preHandler', async(req, reply) => 
  const isHttps = req.headers['x-forwarded-proto'] === 'https';
  if (isHttps) 
    return;
  

  const 
    method,
    url
   = req;

  if (method && ['GET', 'HEAD'].includes(method)) 
    const host = req.headers.host || req.hostname;
    reply.redirect(301, `https://$host$url`);
  
);

这个想法是防止通过HTTP 访问服务器,并在应用程序级别强制重定向到HTTPS,因为it is not possible otherwise on Heroku。

我的问题是:如果通过HTTP 向服务器发出的第一个请求(在重定向发生之前)包含用户名/密码等敏感信息,那是否仍然是“危险的”或以某种方式妥协?

【问题讨论】:

【参考方案1】:

您可能在 Heroku 上配置错误。

Heroku 域 (.herokuapp.com) 是 by default HTTPS enabled。同一页面有自定义域 SSL 设置指南的指南。既然您在谈论(用户名+密码),我将假设这是一个网站。您需要做的就是使用 fastify-cors 设置 CORS。您的网站应始终通过 HTTPS 提供服务。

你也不应该使用上面的逻辑。 Fastify 并不打算用作代理服务器。文档强烈建议使用像 nginx 这样的前端代理服务器。使用 Heroku,您不需要所有这些。它已经为你处理好了。

将来您还可以将 Cloudflare 用作 Heroku 之外的“代理服务器”。

【讨论】:

我的意思是,调用 API(由 Fastify 公开)的人可能会选择首先通过 HTTP 发送数据。 是的,数据将被暴露。

以上是关于从 http 重定向到 https 时是不是存在潜在的数据泄漏?的主要内容,如果未能解决你的问题,请参考以下文章

在没有 SSL 的情况下将 https 重定向到 http - IIS 7

Spring Security SAML,使用 SAMLContextProviderLB 设置为 HTTPs 方案时重定向到 HTTP 而不是 HTTPS

如何停止从 HTTP 到 HTTPS 的重定向

使用 PHP 从 HTTP 重定向到 HTTPS

Grails 重定向控制器从 https 切换到 http。为啥?

从https重定向到http?