【问题标题】:Url-Pattern required for query string inclueds "?"查询字符串所需的 Url-Pattern 包括“?”
【发布时间】:2016-03-27 08:44:29
【问题描述】:

我有像http://localhost:8080/default/j_spring_security_check?redirect=1 这样的网址

我想知道如何为上述网址配置网址格式

我已经尝试过以下

<url-pattern>/*</url-pattern>
<url-pattern>/j_spring_security_check/<url-pattern>
<url-pattern>/j_spring_security_check/*<url-pattern>
<url-pattern>/<url-pattern>
<url-pattern>/default/*<url-pattern>

能否请任何人建议我正确的 url 模式来处理上述 url。 如果不可能,还有其他方法可以过滤 url...

提前致谢 尼西恩K

【问题讨论】:

  • 你想用这个过滤实现什么?
  • 这与安全问题有关。我提到的上面的 url 可以很容易地被其他用户使用客户端脚本攻击......这就是为什么要在安全包装过滤器中限制这个 url

标签: java xml web.xml servlet-filters url-pattern


【解决方案1】:

您不能根据 web.xml 文件中的参数过滤 URL。您只能对不带参数的 URL 进行过滤。

您必须在 Java 代码中执行此操作,例如在 ServletFilter 中,甚至直接在 Servlet 中。


假设 default 是您的 web 应用程序的根,您可以将 url-pattern 定义为 /j_spring_security_check/ 并将其与特定的 Servlet 相匹配,该 Servlet 将检查查看 HttpServletRequest 对象的参数。

您可以编写一个ServletFilter,它将在进入 Servlet 之前拦截请求并检查其参数。


编辑:一开始我没有注意到,您似乎正在使用 Spring,并且该 URL 应该已经由框架本身管理。

【讨论】:

  • 谢谢盖尔..你能分享示例代码吗?如果可能的话..提前谢谢
  • 如果你有这个 URL,我猜你正在使用 Spring,那么首先你想通过这个过滤来实现什么?因为j_spring_security_check 应该已经被一些 Spring 代码或配置处理了......
  • 这与安全问题有关。我提到的上面的 url 可以很容易地被其他用户使用客户端脚本攻击......这就是为什么要在安全包装过滤器中限制这个 url
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 2011-01-21
  • 2018-03-25
  • 1970-01-01
  • 2010-11-01
  • 2011-05-14
相关资源
最近更新 更多