CSRF跨站请求伪造漏洞修复

本文详细介绍了CSRF跨站请求伪造漏洞的原理,指出服务器未校验Referer头导致的安全风险。提出了增加拦截器判断Referer合法性来防止CSRF攻击的解决方案,并详细阐述了在Springboot应用中如何配置文件、编写配置类和过滤器来实施这一策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


提示:以下是本篇文章正文内容,下面案例可供参考

一、漏洞描述

跨站请求伪造(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<String> excludesUrl) {
   
        this.excludesUrl = excludesUrl;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值