use*_*684 7 java reverse-proxy web-applications csrf
我已经在我的webapp上成功安装了CsrfGuard,但是在反向代理后面的preprod上进行测试时,情况变坏了.CsrfGuard的javascript isValidDomain不认为我的域是有效的:CsrfGuard JavaScriptServlet返回未经过代理的域...
这是javascript代码:
if(isValidDomain(document.domain, "myRealDomain")) { … }
Run Code Online (Sandbox Code Playgroud)
isValidDomain 只是一个字符串比较方法,事情是:CsrfGuard JavaScriptServlet返回"myRealDomain",javascript代码"document.domain"返回"myProxiedDomain":字符串比较失败!
我不知道该做什么,我会很感激方向!我相信有些人以前遇到过这个问题,反向代理看起来很常见.
您可以配置您的代理以添加标头X-Forwarded-By,X-Forwarded-For和X-Forwarded-Proto.
代理后面的服务器可以使用这些标头来重建原始请求(如在代理上执行的那样)。
这样 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;
Run Code Online (Sandbox Code Playgroud)
示例应用程序服务器(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"
/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4781 次 |
| 最近记录: |