gpt4 book ai didi

java - 反向代理背后的 Csrfguard

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:27:44 25 4
gpt4 key购买 nike

我已经成功安装CsrfGuard在我的 webapp 上,但是当在反向代理后面的 preprod 上测试时,事情变得很糟糕。CsrfGuard 的 javascript isValidDomain 不认为我的域是有效域:CsrfGuard JavaScriptServlet 返回未代理的域...

这是javascript代码:

if(isValidDomain(document.domain, "myRealDomain")) { … }

isValidDomain 只是一个字符串比较方法,问题是:CsrfGuard JavaScriptServlet 返回“myRealDomain”,javascript 代码“document.domain”返回“myProxiedDomain”:字符串比较失败!

我当时不知道该怎么做,我会很感激指示!我相信有些人以前遇到过这个问题,反向代理似乎很常见。

最佳答案

您可以配置您的代理以添加 header X-Forwarded-ByX-Forwarded-ForX-Forwarded-Proto .

代理后面的服务器可以使用这些 header 来重建原始请求(如在代理上执行的那样)。

这样 csrfguard servlet 将使用正确的域来生成脚本。

每个代理/应用服务器的配置当然不同,但这里是 Nginx 与 Tomcat 结合的示例:

示例代理配置 (Nginx):

### proxy headers ###
proxy_set_header X-Forwarded-By $server_addr:$server_port;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;

示例应用服务器 (tomcat/RemoteIpValve ):

<Valve
className="org.apache.catalina.valves.RemoteIpValve"
internalProxies="trusted-ip-here"
remoteIpHeader="x-forwarded-for"
proxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto"
/>

关于java - 反向代理背后的 Csrfguard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22483397/

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