J'ai un serveur Java qui ouvre un socket en utilisant ServerSocket (en utilisant Thrift avec lui). Ce serveur a un client sur la machine locale dans Obj-c qui communique avec le Java server. Tout se passe sur localhost. En ce moment, le serveur Java est également visible sur le réseau, j'aimerais que le serveur Java être accessible uniquement sur localhost. Sinon, il s'agit d'une vulnérabilité de sécurité potentielle et cela fait flipper les utilisateurs lorsque leur pare-feu les avertit.
J'ai essayé de créer le socket serveur à l'aide d'un InetSocketAddress ('localhost', 9090) mais cela semble n'avoir aucun effet. Comment puis-je limiter cette chose à localhost?
new ServerSocket(9090, 0, InetAddress.getByName(null));
InetAddress.getByName(null)
pointe vers l'adresse de bouclage (127.0.0.1)
Et voici le Javadoc où il est dit que
Essayer
new ServerSocket(9090, 0, InetAddress.getByName("localhost"))
Le dernier paramètre du constructeur spécifie à quelle adresse lier le socket d'écoute.
Permettez-moi de carillon avec une solution alternative qui n'accepte que sur le périphérique de bouclage. Toutes les autres solutions "localhost" feront que Java choisira une interface.
new ServerSocket(9090, 0, InetAddress.getLoopbackAddress());
Ceci est disponible depuis Java 7, et ne lance même pas UnknownHostException
new ServerSocket(9090, 0, InetAddress.getByName(null));