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