ruoyi SpringCloud 禁用HTTP TRACE / TRACK方法

允许HTTP TRACE / TRACK方法原理扫描系统漏洞中危通过一个跨站追踪攻击窃取cookies和验证信任如果不使用该服务就禁用它

添加过滤器禁用

目前经过测试发现只有通过过滤器才能做到

package com.zgzk.gateway.filter;
import org.springframework.core.Ordered;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.WebFilterChain;
import reactor.core.publisher.Mono;

@Component
public class TraceMethodWebFilter implements WebFilter, Ordered {

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
        String method = exchange.getRequest().getMethodValue(); // 获取请求方法的字符串表示
        ServerHttpResponse response = exchange.getResponse();

        // 禁用 TRACE 和 TRACK 方法
        if ("TRACE".equalsIgnoreCase(method) || "TRACK".equalsIgnoreCase(method)) {
            response.setStatusCode(HttpStatus.METHOD_NOT_ALLOWED);
            return response.setComplete(); // 直接拦截,终止请求处理
        }

        return chain.filter(exchange); // 继续处理其他请求
    }

    @Override
    public int getOrder() {
        return Ordered.HIGHEST_PRECEDENCE;  // 设置高优先级,确保最先执行
    }
}

控制台指令

curl -v -X TRACE http://localhost:8080

通过访问 curl -v -X TRACE http://localhost:8080 可查看是否禁用HTTP TRACE / TRACK方法

未禁用

那么 HTTP会返回200

禁用成功

那么会根据我们配置的过滤器进行拦截,返回405以及我们设置的提示信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值