java - Tomcat Web xml URL-Pattern 不接受带参数的 url?

标签 java security tomcat web.xml url-pattern

我正在尝试保护 tomcat6 上的几个页面以用于出售的应用程序。除了两个(在下面的代码中用双星号标记)之外,我成功地使用 URL 模式对大多数 URL 进行了保护。这两个 URL 的不同之处在于它们采用确定 View 的参数。我想限制这两个 View ,因此指定了要阻止/保护/验证的确切 URL,如下所示。但是 tomcat 不保护它们。

 <security-constraint>
            <web-resource-collection>
                    <web-resource-name>TopBraid</web-resource-name>
                    <description>Restrict few pages that need security.</description>
                    <url-pattern>/tbl/admin/*</url-pattern>
                    <url-pattern>/tbl/sparql/*</url-pattern>
                    **<url-pattern>/tbl/swp?_viewClass=appConfig:ServerConfigEditor</url-pattern>**
                    **<url-pattern>/tbl/swp?_viewClass=adminConfig:AdminEditPage</url-pattern>**
                    <url-pattern>/tbl/sp_reset</url-pattern>
                    <url-pattern>/tbl/sp_redeploy</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                    <role-name>SERVER_ADMINS</role-name>
            </auth-constraint>
    </security-constraint>
    <security-role>
            <role-name>SERVER_ADMINS</role-name>
    </security-role>
    <login-config>
            <auth-method>FORM</auth-method>
            <realm-name>TopBraid</realm-name>
            <form-login-config>
                    <form-login-page>/logon.html</form-login-page>
                    <form-error-page>/logonError.html</form-error-page>
            </form-login-config>
    </login-config>
    <security-constraint>
            <web-resource-collection>
                <web-resource-name>Public</web-resource-name>
                <description>Matches any page.</description>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
    </security-constraint>

我知道 JSR 规范可能会将它们称为无效模式。想知道是否可以以某种方式指定模式以使其可接受。或者还有其他方法可以限制对我上面列出的两个 URL 的访问吗?

最佳答案

限制对特定 URL 参数及其值的访问,就像您在上面尝试做的那样 /tbl/swp?_viewClass=tblconfig:ConfigEditor /tbl/swp?_viewClass=admins:AdminsEditorPage 无法从 Web 或应用程序服务器访问。这种类型的过滤/URL 限制必须由应用程序本身通过为这些 View 创建唯一 session 来执行。

当应用程序服务器解析传入的 URL 时,一旦到达第一个“?”,它们的工作就完成了。这是传递给应用程序的第一个参数。从这里开始,任何类型的过滤/访问控制都必须由应用程序处理。

关于java - Tomcat Web xml URL-Pattern 不接受带参数的 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15144262/

相关文章:

java - JasperReport - 第二次打开没有数据

java - 使用椭圆曲线加密验证签名

java - org.apache.tomcat.dbcp.dbcp.SQLNestedException : Cannot create PoolableConnectionFactory ( 'v$session.osuser' , 值为 'x' )

java - CXF服务协助

java - 在浏览器中运行 Java applet 时,是否可以删除对对话框的任何需求?

java - 线程 "main"java.lang.NoClassDefFoundError : org/apache/qpid/url/URLSyntaxException 中的异常

java - 使用 JSch 打开 SSH channel 时出现 "session is down"错误

java - 如何在带有嵌入式tomcat的Spring Boot应用程序中设置域名

java - Java中TCP连接过程中检测、预防和管理错误的方法有哪些?

android:allowbackup ="false"不工作