1

我管理着一些在同样使用 IIS 8.5 的远程服务器上运行的 Tomcat 9 应用程序。每个站点都有三个环境(DEV、TEST 和 PROD)。所有环境都相同,但在不同的服务器上。他们的数据库(Oracle DB)也位于不同的远程服务器上。我不为这些站点使用任何其他第三方框架(例如 Maven 或 Gradle)。

我的一个应用程序存在攻击者可以通过多目录遍历漏洞访问 web.xml 的问题。可以在此处找到一些简要信息:https ://www.securityfocus.com/bid/63052/exploit

但是,我在 DEV 和 TEST 中发现(我也认为是 PROD),我们放置的过滤器实际上导致站点无法正常工作。你输入你的用户名和密码,然后点击登录,什么都不会发生。通过修复我的代码正在测试 URI 的正则表达式,我似乎已经在 DEV 和 TEST 环境中修复了它。代码:

final String REGEX_INCLUDED = ".*\\/WEB-INF\\/web.xml.jsf.*";
...
if (Pattern.matches(REGEX_INCLUDED, URI)) {
        log.debug("SecurityFilter redirect");
        resp.sendRedirect("/errors/403.html"); // /login.jsf OR /index.html
    } else
        chain.doFilter(request, response);

我在 PROD 上部署了新的战争,输入了我的用户名和密码,它就会加载。该网站在登录后重定向到主页,但如果这有意义,它实际上不会加载。响应是一个通用的 502 错误(如下所示),但实际上 URL 确实是 /home.jsp,它应该响应主页。

502 错误

我检查了 catalina 日志,没有发现堆栈跟踪或任何输出错误的迹象。没有其他日志可用于显示问题所在。我试过清除我的缓存并重试,使用不同的浏览器,重新启动 tomcat 服务,在 IIS 中重新启动站点,什么都没有。

如果有什么我想念的东西你想看,请告诉我。顺便说一句,我尝试删除阻止访问 web.xml 的过滤器,以确保它不是问题,无论有无过滤器,都会导致 502 错误。

提前感谢您的帮助。

4

1 回答 1

1

回答我自己的问题:我到处看了看,只有在发布后才找到相关的帖子:

部署时出现 502 代理错误

他们的回答有所帮助。我的 PROD 环境和我的 DEV/TEST 环境之间的区别在于 PROD 位于代理上。我去了服务器上的 IIS,找到了该站点使用的服务器场。然后我单击代理选项并将超时从 30 秒更改为 60 秒。看起来我的代理超时了。希望这对将来的某人有所帮助。

于 2021-03-24T12:39:08.620 回答