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

只允许分号用于Spring安全5中的某些特定网址,即严格的Http防火墙?

龙洛城
2023-03-14

我们正在使用primefaces媒体组件,它生成的网址为/javax.faces.resource/dynamiccontent.properties;/ .包含分号(;).

因此,我们遇到了异常,即请求被拒绝,因为URL包含潜在的恶意字符串。

在Spring Security 5更新中,默认启用StrictHttpFirewall。我们可以使用StrictHttpFirewall中的setAllowSemicolon(true)指定允许分号。

但这将适用于所有URL。

有什么方法可以让我们配置只允许特定URL使用分号?

共有2个答案

慕项明
2023-03-14

如果使用xml配置,请声明您的bean:

<bean id="customStrictHttpFirewall"
    class="org.springframework.security.web.firewall.StrictHttpFirewall">
    <property name="allowSemicolon" value="true"/>
</bean>

然后在安全性中.xml参考:

<http-firewall ref="customStrictHttpFirewall"/>

如果使用注释,可以搜索答案,像这样!

戴浩初
2023-03-14

正如上面的答案所示,我还为允许分号的自定义防火墙添加了以下XML定义。

<bean id="myHttpFirewall" class="org.springframework.security.web.firewall.StrictHttpFirewall">
    <property name="allowSemicolon" value="true"/>
</bean>

<security:http-firewall ref="myHttpFirewall"/>

然而,这本身没有影响。为了在我应用程序中使用防火墙,我必须将它添加到我的FilterChainProxy中,如下所示:

<bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy">
    <constructor-arg>
        <list>
            <security:filter-chain pattern="/**" filters="...."/>
        </list>
    </constructor-arg>
    <property name="firewall" ref="myHttpFirewall"/>
</bean>
 类似资料:
  • 我正在spring boot中创建一个REST api,目前我有一个映射来获取用户和特定用户的列表。 假设我的用户是这样的: 还有,在发送更新用户的请求时,请求体是否需要正确嵌套? 两者都是有效的还是2号?

  • 我正在尝试通过Spring Security进行登录的oAuth2配置设置。但仅限于特定的网址。 我的安全配置如下。 基本上,我只希望oauth2Login成为以/secured开头的URL的触发器。它似乎几乎可以工作,唯一的问题是每当Spring试图将我的会话重新定向到google进行身份验证时,它就会触发404。 oauth身份验证的标准重定向应该触发到http://localhost:808

  • 我有多种服务。他们都使用jwt进行授权。但是,当我的服务相互通信时,我不希望它们进行身份验证。当客户端向serviceA发送请求,serviceA需要serviceB提供数据时,serviceA验证令牌就足够了(当客户端向serviceB发送请求时也是如此)。我使用eureka作为注册表,使用openfeign在服务之间进行通信。现在我总是收到这样的401回复: 更具体地说,我的authservi

  • 我试着给多个URL全部许可,但我得到了403。当我禁用csrf时,所有请求都在没有身份验证的情况下工作。请在下面找到我的安全配置。 请指正我遗漏的地方。谢谢你...

  • 我们有以下安全配置代码, 我们需要在Spring Boot应用程序中限制以下请求(不是所有请求),并且只允许在属性中给定的上进行这些请求。

  • 我用Spring靴和Spring安全。 我这样添加基于url的安全性 有没有办法只授权get、post、put…在url上担任某些角色?