首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clojure swank服务器打开公共端口?

clojure swank服务器打开公共端口?
EN

Stack Overflow用户
提问于 2010-09-20 04:17:27
回答 3查看 632关注 0票数 10

(这个问题被否决了,我觉得很奇怪。我怎么得罪你了?)

我认为运行swank服务器通常会向世界开放端口4005,而不是绑定到仅限本地主机的连接,这是正确的吗?

因此,任何在咖啡馆里进行黑客攻击的人不仅允许路人在他们的电脑上执行任意代码,而且还为他们提供了一个很好的界面。

当我使用'mvn clojure: swank ',或者'lein swank',或者(swank.swank/start-server "/tmp/yo")运行swank服务器时,似乎是这样的。

然后我会得到类似这样的东西(谢谢Mike!):

代码语言:javascript
复制
$lsof -i -P
java      11693 john   13r  IPv6 6701891      0t0  TCP *:34983 (LISTEN)

实际上,我可以从同一网络中另一台机器上运行的emacs进行连接。

代码语言:javascript
复制
(swank.swank/start-server "/tmp/yo")

如果我手动启动服务器,它会产生以下输出

代码语言:javascript
复制
Connection opened on local port  34983
#<ServerSocket ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=34983]>

鉴于:

代码语言:javascript
复制
(swank.swank/start-server "/tmp/yo" :host "localhost")

产生:

代码语言:javascript
复制
Connection opened on local port  40368
#<ServerSocket ServerSocket[addr=localhost/127.0.0.1,port=0,localport=40368]>

这似乎更像是我所期待的。

这样做有什么好的理由吗?

关于如何说服更传统的启动方式只接受来自本地进程的连接,您有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-20 05:09:43

完全合理的问题。

在打开一个slime服务器后,您会注意到:

代码语言:javascript
复制
eames:~:% lsof -i -P | grep 4005
java      41477  mjd   33u  IPv6 0x0b8956d0      0t0  TCP [::127.0.0.1]:4005 (LISTEN)

该连接正在侦听端口4005上的本地地址。此接口未公开给网络,因此网络上的其他设备无法连接到您的slime服务器。

编辑:

这是我使用leiningen启动swank的结果,leiningen将"localhost“作为参数提供给swank.swank/start-server。您可能需要仔细检查leiningen插件是否正在打开非本地端口。

您说得对,如果没有显式提供主机,swank会在每个地址上打开连接。相关代码为swank.util.net.sockets/make-server-socket,并记录了此行为。我同意,这似乎是错误的违约。

票数 5
EN

Stack Overflow用户

发布于 2010-09-21 01:30:27

它只接受一个连接,所以即使它暴露在世界上,一旦你连接,它就会停止侦听。

票数 1
EN

Stack Overflow用户

发布于 2010-09-21 12:28:44

如果你使用的是clojure-maven-plugin,最近发布了1.3.4版本,现在可以在localhost上启动swank服务器来防止这个问题。

可以在pom.xml文件中使用以下命令配置此行为:

代码语言:javascript
复制
<configuration>
  <swankHost>someotherhostname</swankHost>
</configuration>

或者从命令行使用以下命令:

代码语言:javascript
复制
mvn clojure:swank -Dclojure.swank.host=someotherhostname
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3747291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档