Domanda

(Questa domanda è stata downvoted, che trovo strano. Come ho offeso?)

ho ragione di pensare che l'esecuzione di un server di Swank di solito apre la porta 4005 per il mondo, non è vincolata alle connessioni localhost sola?

Quindi, chiunque l'hacking in un caffè non è solo permettendo passanti per eseguire codice arbitrario sul proprio computer, ma sta dando loro un'interfaccia bello farlo con.

Sembra che quando ho eseguito un server Swank con 'mvn clojure: Swank', o 'Lein Swank', o (/ start-server di swank.swank "/ tmp / yo")

allora ottengo qualcosa di simile (grazie Mike!):

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

e anzi posso collegare da un Emacs in esecuzione su un'altra macchina sulla stessa rete.

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

Se inizio il server a mano, produce il seguente output

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

considerando quanto segue:

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

produce:

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

Il che sembra più come mi aspettavo.

C'è un buon motivo per fare questo?

Tutte le idee su come i metodi più convenzionali di partenza potrebbe essere convinto ad accettare solo le connessioni provenienti da processi locali?

È stato utile?

Soluzione

domanda Totalmente valido.

Dopo aver aperto un server di melma, si noterà:

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

Il collegamento è in ascolto l'indirizzo locale sulla porta 4005. Questa interfaccia non è esposto alla rete, in modo che altri dispositivi sulla rete non possono connettersi al server melma.

modifica:

Questo è stato il mio risultato di partenza Swank usando Leiningen, che fornisce "localhost" come argomento di swank.swank/start-server. Si consiglia di verificare che il plugin Leiningen sta aprendo le porte non locali.

Hai ragione che Swank apre la connessione su ogni indirizzo se un host non è previsto in modo esplicito. Il codice in questione è swank.util.net.sockets/make-server-socket, e questo comportamento è documentato. Sono d'accordo, sembra che il default sbagliata.

Altri suggerimenti

accetta una sola connessione in modo anche se è esposto al mondo smette di ascoltare una volta ci si connette.

Se si sta utilizzando il clojure-Maven-plugin, la versione 1.3.4 è stato recentemente rilasciato che ora avviare il server Swank contro localhost per evitare questo problema.

Questo comportamento può essere configurato nel file pom.xml con:

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

o dalla riga di comando con:

mvn clojure:swank -Dclojure.swank.host=someotherhostname
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top