Question

(Cette question a été downvoted, que je trouve étrange. Comment ai-je offensé?)

Ai-je raison de penser que l'exécution d'un serveur Swank ouvre généralement le port 4005 dans le monde, pas lié aux connexions localhost seulement?

Donc, toute personne de piratage dans un café est non seulement permet aux passants d'exécuter du code arbitraire sur leur ordinateur, mais leur donne une interface agréable de le faire avec.

Il semble que lorsque je lance un serveur Swank soit avec 'mvn clojure: Swank', ou 'lein Swank', ou (swank.swank / start-server "/ tmp / yo")

je reçois quelque chose comme (merci Mike!):

$lsof -i -P
java      11693 john   13r  IPv6 6701891      0t0  TCP *:34983 (LISTEN)

et bien je peux connecter à partir d'un emacs en cours d'exécution sur une autre machine sur le même réseau.

(swank.swank/start-server "/tmp/yo")

Si je commence le serveur à la main, il produit la sortie suivante

Connection opened on local port  34983
#<ServerSocket ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=34983]>

Attendu que:

(swank.swank/start-server "/tmp/yo" :host "localhost")

produit:

Connection opened on local port  40368
#<ServerSocket ServerSocket[addr=localhost/127.0.0.1,port=0,localport=40368]>

Ce qui semble plus comme je m'y attendais.

Y at-il une bonne raison de le faire?

Toutes les idées sur la façon dont il les moyens plus conventionnels de commencer, il pourrait être persuadé d'accepter la connexion que des processus locaux?

Était-ce utile?

La solution

question totalement valide.

Après l'ouverture d'un serveur de boue, vous remarquerez:

eames:~:% lsof -i -P | grep 4005
java      41477  mjd   33u  IPv6 0x0b8956d0      0t0  TCP [::127.0.0.1]:4005 (LISTEN)

La connexion est à l'écoute sur l'adresse locale sur le port 4005. Cette interface est pas exposé au réseau, si d'autres périphériques sur le réseau ne peuvent pas se connecter à votre serveur de boue.

edit:

Ce fut mon résultat de commencer Swank en utilisant Leiningen, qui fournit « localhost » comme argument pour swank.swank/start-server. Vous pouvez vérifier que le plugin Leiningen ouvre les ports non locaux.

Vous avez raison Swank ouvre la connexion sur chaque adresse si un hôte est pas explicitement prévu. Le code correspondant est swank.util.net.sockets/make-server-socket, et ce comportement est documenté. Je suis d'accord, il semble que la valeur par défaut mal.

Autres conseils

accepte une seule connexion même si elle est exposée au monde, il cesse d'écouter une fois que vous connectez.

Si vous utilisez le plugin clojure-maven, la version 1.3.4 a été récemment publié qui commencent maintenant le serveur Swank contre localhost pour éviter ce problème.

Ce comportement peut être configuré dans votre fichier pom.xml avec:

<configuration>
  <swankHost>someotherhostname</swankHost>
</configuration>

ou de la ligne de commande avec:

mvn clojure:swank -Dclojure.swank.host=someotherhostname
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top