【问题标题】:Hiding java package structure in url在url中隐藏java包结构
【发布时间】:2010-04-17 16:50:29
【问题描述】:

我们当前的 Web 应用程序 url 向最终用户显示类包结构。这是因为在 web.xml 中 servlet 映射标记如下 Servlet_ 名称 /servlet/com.xxx.yyy.ClassName

有什么方法可以隐藏包结构。即 com.xxx.yyy.ClassName 只是 ClassName?

谢谢 萨米尔

【问题讨论】:

  • 不是 Java 人,但可能是某种查找表? MySupaLib = com.lib.my.Supa

标签: java servlets


【解决方案1】:

这可以识别为 Tomcat 的内置 InvokerServletold and vulrenable feature。要解决此问题,请在 Tomcat 的 /conf.web.xml 中禁用它,方法是删除或注释掉与 <servlet-name>invoker</servlet-name> 关联的 <servlet><servlet-mapping> 条目。

这是旧 Tomcat 版本中的一个安全漏洞,在 Tomcat 5 及更高版本中已修复,该漏洞已被弃用并默认禁用。它将在 Tomcat 7 中删除。

您需要自己明确定义 webapp 的 web.xml 中的所有 servlet,以及一个像样的 url-pattern。如果您有很多 servlet,请考虑 前端控制器模式,即只有一个 servlet,它根据每个请求方法、请求 URI、请求路径信息等委托和执行所需的业务逻辑开。

【讨论】:

    【解决方案2】:

    是的。修复你的 web.xml url 映射。

    如果由于某种奇怪的原因这是不可能的,你可以在前面添加这个过滤器来重写 url:

    http://tuckey.org/urlrewrite/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-16
      • 2018-07-05
      • 1970-01-01
      • 2012-01-12
      • 2013-08-10
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      相关资源
      最近更新 更多