当前位置: 首页 > 知识库问答 >
问题:

Spring Security性:在3.1中,只对“GET”请求绕过安全过滤器

刁英朗
2023-03-14

我希望我的服务只对传入的POST/PUT/DELETE请求执行身份验证,而对任何GET请求都绕过它。低于3.1的Spring版本具有“filters=“none”属性,可用于绕过特定URL模式的所有安全过滤器。在3.1中,不推荐使用“filters=“none”,替代解决方案是对“http”元素使用“security=“none”属性。这不支持基于传入的请求类型(GET/PUT/POST/DELETE)进行配置。

我使用的是Spring 3.1.1,当前配置如下:

<!-- Just un-comment any resource if you don't want authentication to be done on them -->
<http pattern="/base/version" security="none"/>

<!-- Secure resources -->
<http create-session='stateless' entry-point-ref="tokenAuthenticationEntryPoint">
  <custom-filter position="PRE_AUTH_FILTER" ref="tokenAuthenticationFilter" />
  <intercept-url pattern="/v1/abc/**" method="GET" filters="none"/>  //This doesn’t work currently
  <intercept-url pattern="/v1/abc/**" method="POST" access="ROLE_USER"/>
  <intercept-url pattern="/v1/abc/**" method="PUT" access="ROLE_USER"/>
  <intercept-url pattern="/v1/abc/**" method="DELETE" access="ROLE_USER"/>
  <intercept-url pattern="/**" access="ROLE_USER" />
</http>

如何绕过Spring 3.1中pattern=“/v1/abc/**”method=“GET”的安全过滤器?

共有1个答案

逄边浩
2023-03-14

我找到了一种解决问题的方法——使用基于表达式的访问控制,我使用了Access=“permitAll”,它在不禁用过滤器的情况下配置授权。

<!-- Just un-comment any resource if you don't want authentication to be done on them -->
<http pattern="/base/version" security="none"/>

<!-- Secure resources -->
<http create-session='stateless' entry-point-ref="tokenAuthenticationEntryPoint" use-    expressions="true">
  <custom-filter position="PRE_AUTH_FILTER" ref="tokenAuthenticationFilter" />
  <intercept-url pattern="/v1/abc/**" method="GET" access="permitAll"/>
  <intercept-url pattern="/v1/abc/**" method="POST" access="hasRole('ROLE_USER')"/>
  <intercept-url pattern="/v1/abc/**" method="PUT" access="hasRole('ROLE_USER')"/>
  <intercept-url pattern="/v1/abc/**" method="DELETE" access="hasRole('ROLE_USER')"/>
  <intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
</http>
 类似资料:
  • 在内部,如果出现任何异常,将被重定向&这不需要通过,可以跳过此请求。 我已经实现了OncePerRequestFilter&任何请求都不会调用它。这必须在OAuth过滤器之前调用。 让我知道这个安全配置出了什么问题。

  • 问题内容: 我有一个使用安全性约束来锁定对资源访问的Java Web应用程序。当Ajax请求需要身份验证时,我试图操纵HTTP 401响应,因此我创建了一个过滤器,该过滤器观察响应中的HTTP状态,并在需要时进行相应的修改。 问题是,如果需要身份验证,则直到将401发送到浏览器后,过滤器才会被调用。安全约束似乎在请求处理链中的过滤器之前。我的过滤器的url模式比任何安全约束都更通用。平台是WebS

  • 问题内容: 我已经使用Jersey实现了REST服务。为了让更多的安全,我加入了球衣安全注解为REST方法(,)。 以下是我的示例REST服务: 但是问题是,以前我使用过滤器来验证URI。 web.xml: 根据访问某些REST服务,应包含一个有效的令牌(由应用程序生成)。 某些REST端点不需要令牌即可访问服务。在这种情况下,我必须绕过过滤器的实现: 所以我的要求是这样的。 如果我们声明了某个R

  • 简要描述 有些时候,通用的绕过技巧并不可行,这个时候我们就得观察缺陷点的周围环境,想想其它办法咯。“猥琐绕过”与通用绕过不 同的是,它通用性小,往往只是特例。 详细说明 1. 直接看实例点: http://qzs.qq.com/qzone/v6/custom/custom_module_proxy.html#siDomain=1&g_StyleID=aaaaaaaaaa 2. 可以看出,这是一个

  • 简要描述 关于反射型的基本东西,暂时就到这啦,如果后面有什么好的 case,再做增补。最近,有些人会问到怎么绕过浏览器的 XSS 过滤 器,所以从这节开始,给出点绕过的例子。当然这些绕过浏览器的方法,不是万能的。不同浏览器,不同场景都会存在差异。满足场景 要求时,才可以使用。 此文给出的是一个来自 sogili 分享的 chrome 下绕过过滤器的方法,在腾讯某处 XSS 上的应用。 这一类都算是

  • 当我调用我的服务时,我的这个URL: 我有这个堆栈跟踪: 什么是平均健康有一个空的筛选器列表?