Die Ermittlung einer eingehenden Verbindung erfolgt von einem lokalen Computer

Ich habe einen SocketServer, der eingehende Verbindungen akzeptiert. Aus Sicherheitsgründen sollte ich nur lokale Verbindungen zulassen (Verbindungen von der Maschine, auf der der Server läuft).

Wie kann ich feststellen, ob eine eingehende Verbindung von einem anderen Computer stammt? Ist der folgende Code dafür sicher?

Socket socket = someServerSocket.accept();
String remoteAddress = socket .getInetAddress().getHostAddress();
if (!fromThisMachine(remoteAddress)) {
    // Not from this machine.
}

währendfromThisMachine() Methode ist wie folgt:

public boolean fromThisMachine(String remoteAddress) {
    try {
        Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
        while (interfaces.hasMoreElements()) {
            NetworkInterface networkInterface = interfaces.nextElement();
            Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
            while (addresses.hasMoreElements()) {
                InetAddress inetAddress = addresses.nextElement();
                String hostName = inetAddress.getHostName();
                String hostAddr = inetAddress.getHostAddress();
                if (hostName.equals(remoteAddress) || hostAddr.equals(remoteAddress)) {
                    return true;
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
    log("Unauthorized request to server from: " + remoteAddress);
    return false;
}

Danke, Mohsen

Antworten auf die Frage(3)

Ihre Antwort auf die Frage