首页 > 解决方案 > 如何使用 Spring Security 注入默认安全标头

问题描述

我使用 Spring Security 5.1.6,并在此处阅读有关安全标头的信息;

Spring Security 允许用户轻松注入默认的安全标头来帮助保护他们的应用程序。Spring Security 的默认设置是包含以下标头:

Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
X-XSS-Protection: 1; 模式=块

但是从这个文档看来,这些头文件似乎没有被隐式添加,所以我需要自己注入默认头文件。问题是,我可以在 spring-security.xml 中做到这一点,还是必须以其他方式做到这一点?

标签: javaspringspring-securityhttp-headers

解决方案


据我了解,默认没有设置默认头,需要在spring-security.xml中包含这个:

<security:headers/>

对于您希望包含默认标题的任何模式。
例子:

<security:http pattern="/certainpage.html" use-expressions="true" request-matcher="regex" authentication-manager-ref="authManagerLink">
        <security:http-basic/>
        <security:intercept-url pattern="/certainpage.html" access="permitAll"/>
        <security:headers/>
</security:http>

仅添加特定的安全标头是这样完成的:

<security:headers>
            <security:frame-options policy="SAMEORIGIN"/>
            <security:content-type-options disabled="false" />
            <security:xss-protection enabled="true" block="true" />
</security:headers>

我在用<spring.security.version>5.1.6.RELEASE</spring.security.version>


推荐阅读