【问题标题】:security-constraint does not work安全约束不起作用
【发布时间】:2014-11-20 07:53:19
【问题描述】:

我需要阻止对 jsp 页面的直接访问。

我的 web.xml 是这样设置的:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>My Hidden Pages</web-resource-name>
    <url-pattern>/*.jsp</url-pattern>
  </web-resource-collection>
  <auth-constraint></auth-constraint>
</security-constraint>

但仍然可以通过在浏览器地址栏中输入其地址来访问所有页面。 我该如何解决这个问题?

仅供参考,我正在使用 jetty-maven-plugin 和 servlet-api 2.5

谢谢

【问题讨论】:

    标签: java jsp servlets jetty web.xml


    【解决方案1】:

    你不会那样隐藏 jsps。

    有几种常见的方法(最好的选择优先)

    1. 在构建时预编译 JSP,不要在 WAR 文件中包含实际的 JSP 文件。

    2. 将您的 JSP 文件放在 WEB-INF 文件夹中的某个位置。然后通过控制器 servlet 访问 jsps。这使用 WEB-INF 的安全性来防止对 JSP 文件的直接访问,这是所有 servlet 容器都必须遵守的。

      查看过去有关此问题的 stackoverflow 问题:

      还有更多,只需搜索“jsp in web-inf”即可了解有关此概念的更多信息。

    3. 正确配置 Jetty 的 JSP 实现。一旦完成,这意味着对 JSP 文件的所有访问都必须通过该实现的JspServlet

      请参阅webdefault.xml,了解如何定义此映射。

      如果您在启动时看到关于 "No JSP Support for " 的错误或警告,则说明您没有正确配置 JSP,这意味着所有 JSP 文件都将以静态方式提供。

      注意:如果您使用的是旧版本的 Jetty(任何早于版本 7.6.16 的版本),或者使用旧版本的 Java(任何早于 1.7_40 的版本),或者在 Windows 上使用 Jetty(这里的问题是Jetty 9.3.0 将在下个月左右发布),那么即使这样也可以解决。

    【讨论】:

    • 刚刚更新 jetty-maven-plugin(现在我使用的是 9.2.3)security-constraint 标签开始工作。谢谢。
    【解决方案2】:

    您的&lt;url-pattern&gt; 不正确。它应该是&lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;,没有/。根据规范允许的模式是:

    URL 模式 是相对于应用程序上下文的 URI。 模式可以包括:

    • 路径映射,以/ 开头并以/* 结尾 此模式标识以给定路径开头的任何资源,例如, /catalog/*/catalog/products/*
    • 扩展名映射,以*. 开头 此模式标识具有给定扩展名的任何资源,例如*.jsp*.gif
    • 默认 servlet 映射,仅包含 / 此模式标识应用程序的默认 servlet。
    • 完全匹配 此模式使用表示特定资源的字符串,例如,/snoop 是一个 servlet 映射和 /list/banner.jsp 是一个文件映射。

    如果你想保护给定文件夹中的页面,你需要使用/folder/*这样的模式,如果你想保护所有页面只使用*.jsp,如果你想保护除index.jsp之外的所有页面,你需要添加另一个允许显式访问/index.jsp 文件的约束。

    【讨论】:

    • 我需要隐藏应用程序根目录中的所有jsps(这是我的url映射的原因)。顺便说一句,使用*.jsp 模式页面仍然可以访问。
    • @helloIAmPau 那么它一定是Jetty的问题,因为*.jsp在其他容器中工作。
    • 是的!请参阅我上面的评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多