提示:以下是本篇文章正文内容,下面案例可供参考
一、漏洞描述
跨站请求伪造(Cross-site request forgery,简称CSRF),是一种常见的Web安全漏洞,由于在Web请求中重要操作的所有参数可被猜测到,攻击者可通过一些技术手段欺骗用户的浏览器去访问一个用户曾经认证过的网站,遂使攻击者可冒用用户的身份,进行恶意操作。
经测试,服务器未校验Referer头,因此攻击者可以直接构造一个恶意的访问地址让用户在不知情的情况下访问从而实现CSRF恶意操作。
二、解决建议
增加拦截器,判断referer是否合法,合法则放行。
二、解决方法
Springboot 配置文件增加配置
# 信息安全
security:
#跨站点伪造请求配置
csrf:
#是否开启跨站点伪造请求过滤(开启:true 关闭:false)
enable: true
#不拦截的url
excludes-url:
- /
- /login
- /logout
- /getLoginUrl
#不拦截的域名
excludes-domain:
- localhost
- 127.0.0.1
编写配置类
/**
* @author wcs
* @desccription: 系统安全配置类
* @Date: 11:03 2022/2/17
*/
@Configuration
@ConfigurationProperties(prefix = "security")
public class SecurityConfig {
private CsrfConfig csrf;
private AccountConfig account;
public CsrfConfig getCsrf() {
return csrf;
}
public void setCsrf(CsrfConfig csrf) {
this.csrf = csrf;
}
public AccountConfig getAccount() {
return account;
}
public void setAccount(AccountConfig account) {
this.account = account;
}
}
import java.util.List;
/**
* @author wcs
* @desccription: 跨站点请求伪造
* @Date: 11:05 2022/2/17
*/
public class CsrfConfig {
/**
* 是否启用
*/
private boolean enable;
public void setEnable(boolean enable) {
this.enable = enable;
}
public boolean isEnable() {
return enable;
}
/**
* 忽略的URL
*/
private List<String> excludesUrl;
public void setExcludesUrl(List<