Вопрос

(Этот вопрос был доставлен, который я нахожу странно. Как я обидел?)

Я прав думаю, что запуск Swank Server обычно открывает порт 4005 к миру, не связанным с локальными соединениями только?

Таким образом, кто-либо, взлом в кафе, не только позволяет прохожими, чтобы выполнить произвольный код на своем компьютере, но дает им хороший интерфейс, чтобы сделать это с.

Похоже, что когда я запускаю Swank Server с либо «MVN Clojure: Swank», либо «Lein Swank», или (SWANK.swank / Start-Server »/ TMP / YO")

Тогда я получаю что-то вроде (спасибо Майк!):

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

И действительно, я могу подключиться от эмакла, работающих на другой машине в той же сети.

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

Если я запускаю сервер вручную, он производит следующий вывод

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

В то время как:

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

производит:

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

Который кажется больше, как я ожидал.

Есть ли веская причина для этого?

Любые идеи о том, как это более обычные способы начать его можно убедить только принимать соединения только от местных процессов?

Это было полезно?

Решение

Полностью действительный вопрос.

После открытия Slime Server вы заметите:

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

Соединение прослушивает локальный адрес в порту 4005. Этот интерфейс не подвергается воздействию сети, поэтому другие устройства в сети не могут подключаться к вашему Slime Server.

редактировать:

Это был мой результат начну Swank, используя Лейнинген, который обеспечивает «localhost» в качестве аргумента swank.swank/start-server. Отказ Возможно, вы захотите проверить, что плагин Leinhen открывает не локальные порты.

Вы правы, что Swank открывает соединение на каждом адресе, если хост не предоставлен явно. Соответствующий код swank.util.net.sockets/make-server-socket, И это поведение документировано. Я согласен, кажется неправильным по умолчанию.

Другие советы

Он принимает только одно соединение, чтобы даже если оно воздействует на мир, он перестает слушать, как только вы подключаетесь.

Если вы используете The Clojure-Maven-Plugin, версия 1.3.4 была недавно выпущена, которая теперь запускает Swank Server против localhost, чтобы предотвратить эту проблему.

Это поведение может быть настроено в вашем файле POM.XML с:

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

или из командной строки с:

mvn clojure:swank -Dclojure.swank.host=someotherhostname
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top