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

问题描述

我在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}`);
  }
});

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

我的问题是:如果通过HTTP向服务器发出的第一个请求(在重定向发生之前)包含敏感信息,例如用户名/密码,那还不是“危险”或以某种方式受到威胁吗? / p>

解决方法

您可能在Heroku上配置了错误的内容。

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...