我在托管在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向服务器发出的第一个请求(在重定向发生之前)包含用户名/密码等敏感信息,这不是仍然很“危险”吗?
发布于 2020-09-21 17:27:53
您可能在Heroku上错误配置了一些东西。
Heroku域(.herokuapp.com)是by default HTTPS enabled。同一页面上有自定义域SSL安装指南。既然你说的是(用户名+密码),我就假设这是一个网站。您所需要做的就是使用fastify-cors设置CORS。您的网站应该始终通过HTTPS提供服务。
此外,您不应该使用上面的逻辑。Fastify不是用来做代理服务器的。文档强烈建议使用像nginx这样的前置代理服务器。使用Heroku,您不需要所有这些。它已经为你处理了这个问题。
将来,您还可以将Cloudflare用作Heroku之外的“代理服务器”。
https://stackoverflow.com/questions/63978774
复制相似问题