为什么IntelliJ想要接受传入的网络连接?

Bas*_*que 18 java security intellij-idea

➠IntelliJ中的哪些功能充当接收传入连接的服务器?

首次运行IntelliJ 2017.1.1时,我收到一个对话框,询问传入网络连接的权限.

您是否希望应用程序"java"接受传入的网络连接?

单击"拒绝"可能会限制应用程序的行为.可以在"安全和隐私"首选项的"防火墙"面板中更改此设置.

[否认允许]

请求权限接受传入网络连接的对话框的屏幕截图

单击Maven选项卡时,在New Project向导中全新安装IntelliJ 2017.2 Ultimate Edition时出现的对话框示例.

Apple Project macOS防火墙消息的屏幕截图,在New Project向导的Maven选项卡中询问

为什么IntelliJ会导致此提示?运行NetBeans时我没有遇到这样的事件.

否认或接受的影响究竟是什么?我担心让Java进程接受外部网络连接,因为这样做会带来严重的安全风险.

可能与:


这个问题不是关于消息的来源.源是Apple macOS 应用级防火墙.您可以允许或阻止应用程序侦听传入的网络连接.允许这是一个安全风险.

IntelliJ要求添加到允许侦听传入消息的应用程序列表中.我的问题是,"为什么IntelliJ需要接受传入的网络连接?".

屏幕截图的macOS>系统偏好设置>安全和隐私>防火墙

Sub*_*mal 5

可能它链接到以下内容。

如果您单击http://localhost:63342/,您应该能够访问内置服务器。默认情况下应该只在本地接口上侦听。

IntelliJ 内置服务器

6942-6992 范围内的开放端口似乎与SocketLock.java相关联

myServer = BuiltInServer.startNioOrOio(workerCount, 6942, 50, false, handler);
Run Code Online (Sandbox Code Playgroud)

注意:端口6953, 6969, 6970不包括在该范围内。请参见内置服务器.java

private static final int[] FORBIDDEN_PORTS = {6953, 6969, 6970};
Run Code Online (Sandbox Code Playgroud)

另一个开放端口链接到一个进程 org.jetbrains.idea.maven.server.RemoteMavenServer

jps -l | grep jetbrains
24628 org.jetbrains.idea.maven.server.RemoteMavenServer
Run Code Online (Sandbox Code Playgroud)

你可以找到开放的端口 netstat

on Linux: `netstat -ltupne`
on OSX (something like): nettop -np java
Run Code Online (Sandbox Code Playgroud)

以及相关的java进程jps(如上所示)


jwe*_*ing -11

因为这样做会带来严重的安全风险。

事实并非如此,除非您不信任特定产品。如果您不信任某个产品,您为什么要使用它?

IntelliJ 需要偶尔检查其许可证,连接到更新服务器、maven 存储库、插件存储库、您可能想要连接的外部应用程序服务器,数据库服务器也是如此。

Netbeans 也需要同样的权限,毫无疑问,您只是忘记了您在某个时刻授予了它权限,或者它使用了您在某个时刻授予了权限的外部 JVM。

  • IntelliJ 不需要接受传入连接来执行您在答案中引用的所有操作。作为一名开发人员,您有时可能会连接到公共不安全的 WiFi 网络(星巴克、机场等),并且不希望您的计算机上有未知的开放端口。 (3认同)
  • 这个答案是愚蠢且不正确的。愚蠢:忽视从机器外部打开传入连接的端口的安全风险要么是无知,要么是愚蠢的。不正确:正如 Lokni 评论的那样,您提到的“所有”功能都需要“传出”连接,而不是传入连接。最终这个答案甚至没有解决这个问题。当有人试图提供帮助时,我不愿意投反对票,但我必须在这里。 (3认同)