【问题标题】:Spring security: allow a few pages to be displayed in iframeSpring security:允许在 iframe 中显示几个页面
【发布时间】:2022-07-01 22:16:44
【问题描述】:

我支持使用 Spring Security (5.3.3.RELEASE) 的网站。由于以下配置,该站点无法在其他站点的 iframe 中显示

<security:headers>
  <security:frame-options policy="SAMEORIGIN"/>
</security:headers>

现在我被要求允许在其他网站的 iframe 中显示一些页面。我查看了 Spring 文档,看来我可以通过以下方式添加一个 bean:

<security:headers>
  <security:frame-options policy="SAMEORIGIN" ref="bean_id"/>
</security:headers>

我无法找到有关 bean (bean_id) 必须实现哪些接口或方法的信息,或者它是否可用于决定哪些页面是可框架的。非常感谢任何帮助或示例。

【问题讨论】:

    标签: spring-mvc spring-security


    【解决方案1】:

    接口类型为AllowFromStrategy。但是该接口已被弃用,因为 ALLOW-FROM 是一个过时的指令,在现代浏览器中不再适用,see here。另一种方法是使用CSP: frame-ancestors

    Spring Security 支持 Content-Security-Policy 标头。您可以rely on the DelegatingRequestMatcherHeaderWriter 实现仅将标题添加到特定页面,如下所示:

    <http>
        <!-- ... -->
    
        <headers>
            <header ref="headerWriter"/>
        </headers>
    </http>
    
    <beans:bean id="headerWriter"
        class="org.springframework.security.web.header.writers.DelegatingRequestMatcherHeaderWriter">
        <beans:constructor-arg>
            <bean class="org.springframework.security.web.util.matcher.AntPathRequestMatcher"
                c:pattern="/page-with-csp"/>
        </beans:constructor-arg>
        <beans:constructor-arg>
            <beans:bean
                class="org.springframework.security.web.header.writers.ContentSecurityPolicyHeaderWriter"/>
        </beans:constructor-arg>
    </beans:bean>
    

    【讨论】:

      猜你喜欢
      • 2013-03-20
      • 2016-03-09
      • 2014-06-18
      • 2018-01-20
      • 2016-01-02
      • 2014-07-21
      • 2019-08-10
      • 2016-11-01
      相关资源
      最近更新 更多