web-dev-qa-db-fra.com

Comment créer Java socket qui est localhost uniquement?

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?

31
Matt Ronge

Tiré d'une autre question:

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

40
Matías

Essayer

new ServerSocket(9090, 0, InetAddress.getByName("localhost"))

Le dernier paramètre du constructeur spécifie à quelle adresse lier le socket d'écoute.

21
Geoff Reedy

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

20
Fabian Lange
new ServerSocket(9090, 0, InetAddress.getByName(null));
3
user207421