Spring Boot | Spring Boot “CSRF 防护功能“ 、Security “管理前端页面“
在Spring Boot项目中,CSRF(跨站请求伪造)防护是一个重要的安全特性,可以通过Spring Security来实现。以下是一个简单的配置示例:
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// 启用CSRF保护
.csrf()
.ignoringAntMatchers("/h2-console/**") // 可以选择忽略某些URL的CSRF保护
.and()
// 其他的安全配置...
;
}
}
在这个配置中,我们启用了CSRF保护,并且忽略了对H2数据库控制台的访问,因为H2控制台经常用于管理数据,可能需要绕过CSRF保护。在实际应用中,应该根据具体需求调整忽略的URL规则。
Spring Security还提供了对管理端点的强大支持,你可以通过Spring Boot的spring-boot-starter-security
依赖来快速启用安全控制。以下是启用安全控制的示例:
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// 管理端点的安全配置
.authorizeRequests()
.antMatchers("/actuator/**").hasRole("ACTUATOR_USER")
.anyRequest().authenticated()
.and()
// 其他的安全配置...
;
}
}
在这个配置中,我们为管理端点/actuator/**
设置了基于角色的访问控制,只有拥有ACTUATOR_USER
角色的用户才能访问。你可以通过自定义用户明细来控制访问,或者使用基于内存的用户明细配置:
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
// ...
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("admin").password("{noop}admin").roles("ACTUATOR_USER");
}
在这个配置中,我们为管理控制台创建了一个用户名为admin
,密码为admin
的用户,并赋予了ACTUATOR_USER
角色。在实际应用中,应该使用更安全的方式存储用户凭据。
评论已关闭