从 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