gpt4 book ai didi

Tomcat 8.5.32 为通过 https 的登录请求返回 403

转载 作者:行者123 更新时间:2023-11-28 22:00:55 25 4
gpt4 key购买 nike

我有点疑惑,一直卡在这个问题上。 nginx 用作反向代理和 SSL 终结器。我们的应用程序服务器在 Tomcat 8.5.9 上,一切都按预期工作。我们注意到登录请求失败了 403在将应用程序服务器升级到 Tomcat 8.5.32 后从客户端通过 https 发送时。看起来请求甚至没有命中我们的代码,而是由 tomcat 返回 403地位。我什至没有在 catalina.out 中看到任何日志条目或 localhost .

在研究了一些关于 CORS 和特定请求的 header (包含授权数据的请求)之后,我认为如果我们删除 Origin,请求就会通过。来自请求。

作为引用,请求看起来像这样......

Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Authorization: Basic anhjgFpbW9uLmhyg542VAa26hf5Fre76g==
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 49
Content-Type: application/json
Cookie: <cookie list>
Host: myserver.mydomain.com
Origin: https://myserver.mydomain.com
Pragma: no-cache
Referer: https://myserver.mydomain.com/client/index.html?param=value
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.32 Safari/537.36

服务器拒绝请求时的响应头。

Request URL: https://myserver.mydomain.com/api/login
Request Method: POST
Status Code: 403
Remote Address: xxx.xxx.xx.xxx:443
Referrer Policy: no-referrer-when-downgrade
Connection: keep-alive
Content-Length: 0
Content-Type: text/plain
Date: Mon, 13 Aug 2018 06:16:43 GMT
Server: nginx/1.13.12

如果我们删除 Origin,登录请求将通过(tomcat 响应 200 表示成功登录)从要求。

感谢一些进一步调试的建议,因为我现在没有想法。明确地说,如果我只是将 tomcat 降级到 8.5.9(反向代理或设置中没有其他更改),登录就会通过。如果请求是通过 http 而不是 https 发送的,也会登录。

更新(2018 年 8 月 18 日):这似乎是由 security fix 引起的在 8.5.32 中。虽然请求是用 Origin: * 阻止请求,修复程序似乎阻止了所有带有 Origin 的请求和 Credentials: true .

最佳答案

当您修改问题以注明 CVE-2018-8014 时,您已经发现行为的变化是由于 ASF Bug 62343 引起的。 ,在 Tomcat 8.5.32 之前,之前 Tomcat 的默认配置可能会导致应用程序易受攻击。

尚不清楚的是导致您的请求按照您的描述生成的要求 — CORS 的整个想法是启用跨源 请求,其中 HostOrigin HTTP 请求 header 字段将描述不同 来源。但是在您的示例请求中 - HostOrigin 似乎都发现了同一个主机,myserver.mydomain.com,这似乎并没有很有道理。

听起来您可能想弄清楚为什么会这样——如果您使用相同的域,则不需要任何 CORS,并且您的请求不应在以下位置发现任何 Origin header 全部。什么软件负责编写请求——您是否发送手动编写的请求作为集成测试的一部分?然后是您的测试有问题,并且是必须修复的测试。

否则,您现在只需为应用程序配置适当的 CORS 设置。 (它在 8.5.32 之前起作用的原因是因为默认设置是不安全的,所以,这并不神秘。)

另一种选择,作为临时修复/破解,将使用 http://nginx.org/r/proxy_hide_header和/或 http://nginx.org/r/proxy_set_header (您可以通过中间变量使用 inside of an if)。

关于Tomcat 8.5.32 为通过 https 的登录请求返回 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51848224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com