1

特定のドメイン(www.domain.com)からリクエストが送信されているかどうかを確認する必要があります。

これまでのところ、私はリクエストのIPアドレスを取得する方法しか知りません(request.getRemoteHost()メソッドを使用して)。問題は、1つのドメインが(バランスをとるために)多くの異なるIPアドレスにマップされる可能性があるため、次のようなことはできないということです。

   request.getRemoteHost().equals("200.50.40.30")

DNSがwww.domain.comを解決するときに、DNSによって返される異なるIPアドレスが存在する可能性があるためです。

私はこのようなことをしたいです:

   request.getRemoteHost().equals("www.domain.com")

しかし、これまでのところ、それを行う方法についての手がかりはありません(そしてGoogleは私を助けませんでした)。

誰かアイデアはありますか?

前もって感謝します!:)

4

2 に答える 2

2

IPをInetAddressにフィードして、 getCanonnicalHostName()を呼び出すことはできますか?

于 2012-07-03T21:37:44.370 に答える
1

リクエストの送信元を確認しようとしたドメインに連絡した後、サーバーがリクエストを開始する可能性のあるすべてのIPを提供してくれました。これらすべてのIPとマスクを手にしたので、これは、要求がそれらから来ていることを確認するために私が行ったことです。

        //Those IPs and Maks were provided by the domain
    String[] ipsAndMasks = { "AAA.BBB.CCC.DDD/26",
                         "EEE.BBB.CCC.DDD/24",
                 "FFF.BBB.CCC.DDD/29",
                 "GGG.BBB.CCC.DDD/22"};

    Collection<SubnetInfo> subnets = new ArrayList<SubnetInfo>();
    for (String ipAndMask : ipsAndMasks) {
        subnets.add(new SubnetUtils(ipAndMask).getInfo());
    }

    boolean requestIsComingFromTheCorrectDomain = false;
    String ipAddress = request.getRemoteAddr();
    for (SubnetInfo subnet : subnets) {
        if (subnet.isInRange(ipAddress)) {
            requestIsComingFromTheCorrectDomain = true;
            break;
        }
    }

このコードが誰かにも役立つことを願っています!

于 2012-07-06T03:19:47.403 に答える