只允许分号为Spring Security 5中的某些特定网址,即StrictHttpFirewall?

时间:2018-04-11 06:39:29

标签: java spring spring-security

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

由于这个原因,我们遇到了异常,即请求被拒绝,因为该网址包含潜在的恶意字符串。

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

但这适用于所有网址。

我们可以通过哪种方式配置为仅为特定网址分配分号吗?

2 个答案:

答案 0 :(得分:0)

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

<p>Lorem ipsem...</p><p>Lorem ipsem...</p><p>Lorem ipsem...</p><p>Lorem ipsem...</p><p>Lorem ipsem...</p><p>Lorem ipsem...</p><p>Lorem ipsem...</p><p>Lorem ipsem...</p>
<p>Lorem ipsem...</p>
<p>Lorem ipsem...</p>
<p>Lorem ipsem...</p>
<p>Lorem ipsem...</p>
<p>Lorem ipsem...</p>
<footer class="footer">Footer</footer>

然后在security.xml中引用:

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

如果您使用注释,则可以搜索答案like this!

答案 1 :(得分:0)

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

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

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

但是byt本身并没有影响。要在我的应用程序中使用该防火墙,我必须将其添加到我的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>