如何使用 Spring Security 注入默认安全标头
Posted
技术标签:
【中文标题】如何使用 Spring Security 注入默认安全标头【英文标题】:How to inject default security headers with Spring Security 【发布时间】:2020-04-10 02:25:52 【问题描述】:我使用 Spring Security 5.1.6,并阅读有关安全标头 here 的信息;
Spring Security 允许用户轻松注入默认安全性 标头以帮助保护其应用程序。默认为 Spring Security 将包含以下标头:
缓存控制:无缓存、无存储、max-age=0、必须重新验证 编译指示:无缓存 过期:0 X-Content-Type-Options: nosniff 严格的传输安全性: max-age=31536000 ;包括子域 X 帧选项:拒绝 X-XSS-保护:1;模式=块
但是从这个文档看来,这些头文件似乎没有被隐式添加,所以我需要自己注入默认头文件。问题是,我可以在 spring-security.xml 中做到这一点,还是必须以其他方式做到这一点?
【问题讨论】:
@AK47 好像没有,因为有些资源没有得到标题。 “让用户轻松注入”听起来好像真的要对我做点什么。 【参考方案1】:据我了解,默认头文件没有默认设置,需要在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>
【讨论】:
以上是关于如何使用 Spring Security 注入默认安全标头的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring 和 Spring Security 正确注入 SessionFactory
Spring Security 使用非spring默认的登陆页面,是如何跳转到登陆成功页面的?