XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEServerManager

【Java】我的世界XFE服务器管理器

公开
关注 0 Fork 0 Star 0
UTF-8
package com.xfestudio.xfeservermanager.infra.http;

import static org.assertj.core.api.Assertions.assertThat;

import com.sun.net.httpserver.Headers;
import java.net.InetAddress;
import java.util.List;
import org.junit.jupiter.api.Test;

class TrustedProxyResolverTest {
    @Test
    void ignoresSpoofedHeaderFromUntrustedPeer() throws Exception {
        Headers headers = new Headers();
        headers.set("X-Forwarded-For", "198.51.100.25");
        var resolver = new TrustedProxyResolver(List.of("127.0.0.1/32"));

        assertThat(resolver.resolve(InetAddress.getByName("192.0.2.20"), headers))
                .isEqualTo("192.0.2.20");
    }

    @Test
    void walksTrustedProxyChainFromRightToLeft() throws Exception {
        Headers headers = new Headers();
        headers.set("X-Forwarded-For", "198.51.100.25, 10.0.0.8");
        var resolver = new TrustedProxyResolver(List.of("10.0.0.0/8"));

        assertThat(resolver.resolve(InetAddress.getByName("10.0.0.10"), headers))
                .isEqualTo("198.51.100.25");
    }

    @Test
    void rejectsAmbiguousShortIpv4Forms() throws Exception {
        Headers headers = new Headers();
        headers.set("X-Forwarded-For", "127.1");
        var resolver = new TrustedProxyResolver(List.of("10.0.0.0/8"));

        assertThat(resolver.resolve(InetAddress.getByName("10.0.0.10"), headers))
                .isEqualTo("10.0.0.10");
    }
}