Osticket: CSRF 令牌在反向代理后损坏

创建于 2014-03-28  ·  6评论  ·  资料来源: osTicket/osTicket

尝试在反向代理后面使用 osTicket (v1.8.1-dpr),可靠地获取

 Invalid CSRF Token __CSRFToken__
Invalid CSRF token [b4cab350cfce13ee10a8cd27445e7f4466db039e] on
(redacted)

原因似乎是 osticket javascript 基于浏览器 IP 生成令牌,这当然与服务器端验证令牌时的反向代理 IP 不同。

反向代理是 ec2 上的一个 Apache 实例

question

最有用的评论

我知道这篇文章已经有一年多了,但是在尝试使用 osTicket 设置我的反向代理时弹出了几次。 我使用 NginX 作为我的反向代理(我知道,不支持等),通过一些调整我能够通过“无效的 CSRF 令牌”错误。

在我的位置块中,我需要添加一些标题设置:

 location / {
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass_header       Set-Cookie;
            proxy_pass <Backend osTicket location>;
        }

pass_header 似乎使它起作用,但其他设置将确保您的服务器接收正确的 IP 地址。 我相信您也可以在服务器或 http 块中设置这些设置,但这满足了我的需求。

所有6条评论

您的反向代理应该发送X-Forwarded-For 。 可以?

是的,反向代理正在将 X-Forwarded-For 设置为正确的地址。 客户端位于 NAT 之后,因此 Javascript 可能会获取 RFC1918 地址,如果它正在获取绑定接口地址(不清楚是否正在发生)。

你能验证代理服务器(运行 osTicket 的地方和客户端)之间的 cookie 设置吗? 检查返回的 cookie 的 cookie 域和 cookie 路径,并确保中间的任何服务器都没有使用 cookie 或 cookie 设置。

我会检查一下,但这很可能是问题所在(内部主机域和代理的域大不相同)。 我会在几个小时后更新。

我知道这篇文章已经有一年多了,但是在尝试使用 osTicket 设置我的反向代理时弹出了几次。 我使用 NginX 作为我的反向代理(我知道,不支持等),通过一些调整我能够通过“无效的 CSRF 令牌”错误。

在我的位置块中,我需要添加一些标题设置:

 location / {
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass_header       Set-Cookie;
            proxy_pass <Backend osTicket location>;
        }

pass_header 似乎使它起作用,但其他设置将确保您的服务器接收正确的 IP 地址。 我相信您也可以在服务器或 http 块中设置这些设置,但这满足了我的需求。

@webbe我们不正式支持 nginx 作为 osTicket 的服务器。 您可以使用任何您想要的反向代理。 就个人而言,我更喜欢 HAProxy。 感谢您发布您的配置信息,很高兴您的设置工作正常。

此页面是否有帮助?
0 / 5 - 0 等级