[expressjs/express]req.hostname:检查第一个逗号分隔的主机

2024-07-04 870 views
9

修复 #3494

回答

4

我们(Deliveroo)最近遇到了这个问题。我们目前正在解决这个问题,但如果能合并/发布就更好了。我们能做些什么来帮忙吗?

7

计划将其合并到下一个次要版本中。自 1 月 1 日起,我们目前正在处理 3 份不同的安全报告,这就是我们的带宽所在,因为我们正在尝试尽快解决安全问题。我希望这是合理的。根据安全更新是否需要新的次要版本,下一个次要版本应该在 2 月中旬发布。

8

因此,这是针对标头的X-Forwarded-Host,不同于Host。不幸的是,X-Forwarded-Host标头没有规范,并且是临时的,但是这些转发代理正在实现它们。它们总是只使用一个值,突然出现多个报告,似乎有一些新的转发软件在标头中添加了多个值。

8

根据安全更新是否需要新的小版本,下一个小版本应该在 2 月中旬发布。

听起来很合理。谢谢?

0

哦,我看错了代码更改,我的错。我仍然不确定我们应该在这里支持什么。标Forwarded头是未来使用的规范,从技术上讲,任何用户都可以在中定义自己的值X-Forwarded-Host。在 nginx 配置中,我看到的基本方式如下:

proxy_set_header        X-Forwarded-Host   $host;

但是在这样的配置中,他们也可以这样写:

proxy_set_header        X-Forwarded-Host   my-server.com,$host;

而且,如果没有规范,我不确定我们是否应该在做这些事情之前,在没有一些非常流行的反向代理(如 nginx 或 HAproxy)文档的情况下定制我们的支持,因为一旦我们添加它们,我们就必须支持它们

6

我认为原始问题表明它在某种程度上发生在 Openshift 上。但是,是的,也许至少获取产品文档的链接可能会有用。

1

我正在努力清理这个拉取请求,以便在 4.17 中实现。~特别是,这个 PR 中添加的测试实际上在没有修复的情况下通过了当前主控,因此看起来测试实际上并没有验证此处所做的更改。我认为这是因为req.hostname不包括端口号,而且由于测试是第一个带有端口号的元素,所以它无论如何都会切断其余部分。~编辑没关系。

5

我只是在 PR 中添加了一些测试并合并了。